[以下是表1和表2中的两个表] [1]
表1:列名id,名称 表2:列名id,名称
交换后,Table1的名称列数据将反映在表2中,表2的名称将反映在表1中。
我尝试使用以下查询解决此问题:
update table1 t set t.name=replace(t.name,(select name from T1 where T1.id=t.id),(select name from T2 where T2.id = t.id));
update table2 t set t.name=replace(t.name,(select name from T2 where T2.id=t.id),(select name from T1 where T1.id = t.id));
但是,它没有给出正确的结果。
答案 0 :(得分:1)
您无法在一次通过中执行此操作,因为您将在下一步中覆盖要移动的值。这是使用临时表的解决方案:
SELECT * INTO #temp FROM table1;
UPDATE t1 SET name = t2.name FROM table1 t1 INNER JOIN table2 t2 ON t2.id = t1.id;
UPDATE t2 SET name = t1.name FROM #temp t1 INNER JOIN table2 t2 ON t2.id = t1.id;
DROP TABLE #temp;
答案 1 :(得分:0)
您的查询稍作修改即可。
将table temp1创建为select * from table1;
更新table1 set name =(从table2中选择名称,其中table2.id = table1.id);
update table2 set name =(从temp1中选择名称,其中temp1.id = table2.id);
谢谢, 维尼塔辛格