表1
Column1 Column2
aa 12
bb 12
cc 12
aa 12
bb 12
表2
Column1 Column2
aa 12
bb 13
cc 14
aa 15
bb 16
现在,使用Sql查询我需要将table1.column2更新为table2.column2,基于table2到column1和table1.column1记录
update Table1 a set a.Column2 = ( select b.Column2from Table2
b where A.column1= b.column1)
以上查询引发错误:
列或变量中不允许空值。
我试图在两个不同的系统之间复制数据。
答案 0 :(得分:2)
似乎有table1行没有任何匹配的table2行。在这种情况下,子查询返回NULL。我猜table1.column2不允许NULL?
添加WHERE
子句,仅更新table2中匹配的行。
update Table1 a set a.Column2 = (select b.Column2 from Table2 b
where A.column1= b.column1)
where exists (select 1 from Table2 b2
where A.column1= b2.column1)
答案 1 :(得分:0)
除了@ jarih的答案..
如果您在当前支持的版本上,即。 7.1或更高...
您可以使用MERGE
merge into table1 A
using (select column1, column2 from table2) as B
on a.column1 = b.column1
when matched then
update set a.column2 = b.column2