我们需要将数据从一个公司复制到另一个公司,为此,我们需要将一个表中存在的所有数据复制到同一表中,但使用不同的公司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
我想使用更新的companyid复制同一表中表1和表2中的所有数据
对于下面的表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;
经过右旋测试
问题内容: 我对SQL Server不太满意,但是我试图在后台做一些工作来创建我们的EMR系统所缺乏的某些功能-在患者之间复制表格(及其所有数据)。 在SQL Server 2008 R2中,我有三个表来处理已填写的这些表格: 如您所见,它们都与match_id匹配,后者被链接到Patient_id(在第一张表中)。 我想要做的是将这三个表中所有的行复制为一个特定的match_id,重新复制到它们
Update 语句 uodate为更新也就相当于修改 Update 语句用于修改表中的数据。 语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 更新某一行中的一个列 我们为 lastname 是 "Wilson" 的人添加 firstname: UPDATE Person SET FirstName = 'beijing' WHERE LastName = 's
问题内容: 这个问题已经在这里有了答案 : 列数 (5个答案) 6年前关闭。 如何使用SQL计算表中的列数? 我正在使用Oracle 11g 请帮忙。t。 问题答案: 可以使用低位函数代替大写。例如:从user_tab_columns中选择count(*),其中lower(table_name)=’table_name’;
问题内容: A)到目前为止我的方式: B)我想做这样的事情: 注意:我要复制到同一张表中。我只想轻松地将其全部复制到另一行,同时为新行赋予新的ID。 那是好的实践吗? 问题答案: 唯一的方法是像第一个示例一样列出所有列。没有像这样的语法 但是,出于SQL注入和计划缓存的原因,您应该使用参数化的SQL。
问题内容: 我有2个表,两个表都有自己的自动递增ID,这些ID当然是主键。 当我要创建第三个表以建立这两个表之间的关系时,总是会出现错误。 第一个是关于您只能有1个自动递增的列,第二个是当我从那些2中删除auto_increment语句时发生的,因此由于类型匹配失败,sql不允许我将它们设置为外键。 有没有一种方法可以创建关系表而不丢失自动增量功能? 另一个可能的(但不推荐)的解决方案可能是在第一
问题内容: 将所有值从表中的列复制到同一表中的另一列的最简单方法是什么? 问题答案: 使用单个语句(如果列具有相同的数据类型)