我正在尝试使用来自不同表的值更新我的一个表。 update语句会执行,但不会使用正确的值更新列。
例如,
这是table1
,我想要从SID
更新列table2
这是table2
,其中列SID
包含我需要的值。
我正在尝试完成的是从table1
更新table2
uID
,NO
相等而table1.NO
不为空
我是这样做的:
update c1 set c1.SID = c2.SID
from table1 c1, table2 c2
where c1.UID = '09999138181408374834'
and c1.NO = c2.NO
and c1.NO is not null
它会更新5行,但这是输出:
table1
中的更新SID与table2
中的SID不同
有关它为何发生以及如何解决的任何建议?
答案 0 :(得分:2)
通过验证此查询是否返回更新的正确元组来启动调试过程:
select
c1.NO as NO_target
,c2.NO as NO_source
,c1.SID as SID_old
,c2.SID as SID_new
from table1 c1
join table2 c2
on c1.NO = c2.NO
and c1.UID = c2.UID -- I believe this line is needed to prevent a partial Cartesian product
where c1.UID = '09999138181408374834'
and c1.NO is not null
上面的查询返回正确的更新元组后,更正更新的过程很简单。