我正在尝试进行SQL更新,我想根据第二个表中的值设置要更新的列的值。下面的脚本显示了我正在尝试做的事情,但到目前为止我还没有找到正确的语法。
update sometable set name =
case
when (select newid from lookuptable where oldid = name) <> null then newid
else name
end
答案 0 :(得分:3)
UPDATE T
SET
T.name = L.newid
FROM sometable T
INNER JOIN lookuptable L
ON L.oldid = T.name
不需要合并或外部联接,因为您只对更新匹配的行感兴趣。
此外,在将值与null进行比较时,您应始终使用X IS NULL
或X IS NOT NULL
而不是X = NULL
或X <> NULL
,因为相等(和不等式)运算符始终返回false表示空值。