使用案例更新并从不同的表中选择

时间:2010-09-19 23:32:27

标签: tsql

我正在尝试进行SQL更新,我想根据第二个表中的值设置要更新的列的值。下面的脚本显示了我正在尝试做的事情,但到目前为止我还没有找到正确的语法。

 update sometable set name = 
  case
   when (select newid from lookuptable where oldid = name) <> null then newid
   else name
  end

1 个答案:

答案 0 :(得分:3)

UPDATE T
SET
  T.name = L.newid
FROM sometable T
INNER JOIN lookuptable L
  ON L.oldid = T.name

不需要合并或外部联接,因为您只对更新匹配的行感兴趣。

此外,在将值与null进行比较时,您应始终使用X IS NULLX IS NOT NULL而不是X = NULLX <> NULL,因为相等(和不等式)运算符始终返回false表示空值。