如何根据条件更新列

时间:2012-09-07 16:49:56

标签: sql db2

我需要更新表中的列,如果列的null或值与输入不同。

是否可以在单个SQL查询中执行此操作。我的db是db2

我已经尝试了以下一个,但即使没有更改,它也在更新。我不想那样。

UPDATE ABC 
SET AG = CASE 
  WHEN AG IS NULL
    OR AG <> 1000010 
  THEN 1000010
  ELSE AG
END, 
     P = CASE 
  WHEN P IS NULL 
    OR P <> 1235
  THEN 1235
  ELSE P 
END
WHERE c = 607

1 个答案:

答案 0 :(得分:2)

尝试将条件移动到WHERE子句:

UPDATE ABC 
SET AG = 1000010 ,
    P = 1235
WHERE c = 607 and
      (AG IS NULL OR AG <> 1000010 or
       P is NULL or P <> 1235
      )

这应该最小化对触发器的调用。