我们需要将数据从一家公司复制到另一家公司,为此我们需要将一个表中存在的所有数据复制到同一个表中,但公司 ID 不同
表 1:员工
FName Id Department CatId CompanyId
Pratik 1 1 4 1
Praveen 2 2 3 1
Nilesh 3 2 3 1
表 2:组合值
Id Fieldname FieldValue CompanyId
1 Department IT 1
2 Department HR 1
3 Category Staff 1
4 Category Manager 1
我想将表 1 和表 2 中的所有数据复制到同一个表中,并更新 companyid
下面的表 2 是查询 => 它按预期工作
INSERT INTO ComboValues (Fieldname,FieldValue, CompanyId)
(SELECT Fieldname,FieldValue,2 WHERE Companyid = 1)
结果
表 2:组合值
Id Fieldname FieldValue CompanyId
1 Department IT 1
2 Department HR 1
3 Category Staff 1
4 Category Manager 1
5 Department IT 2
6 Department HR 2
7 Category Staff 2
8 Category Manager 2
问题:
但对于表 1,我无法执行相同的操作,因为表 2 中存在部门和类别的更新 ID 值
预期结果 表 1:员工
FName Id Department CatId CompanyId
Pratik 1 1 4 1
Praveen 2 2 3 1
Nilesh 3 2 3 1
Pratik 4 5 8 2
Praveen 5 6 7 2
Nilesh 6 6 7 2
我可以在 C# 中通过使用我想避免的循环来做同样的事情,并且只对 SQL 查询做同样的事情
最佳答案
你可以使用这个:
WITH tmp_table AS
(
SELECT o.id AS id_old, n.id AS id_new
FROM combovalues o
INNER JOIN combovalues n
ON o.fieldname = n.fieldname AND o.fieldvalue = n.fieldvalue
WHERE o.companyid = 1 AND n.companyid = 2
)
INSERT INTO employee (fname, department, catid, companyid)
SELECT fname, d.id_new, c.id_new, 2
FROM employee e
LEFT JOIN tmp_table d
ON e.department = d.id_old
LEFT JOIN tmp_table c
ON e.catid = c.id_old
WHERE companyid = 1;
测试于 rextester
关于sql - 在 SQL 中使用修改后的关系复制同一个表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54123797/