是否可以在一个语句中始终更新一列而另一列有条件地更新?

时间:2018-01-26 13:13:01

标签: sql postgresql

我有一个包含两列ab的表格。还有一个id列,它是主键。我现在想要更新表格中的一行,如下所示:

  • 必须始终更新列a
  • 如果当前值等于某个提供的值,则必须更新列b

是否可以在一个UPDATE语句中进行此类更新?

2 个答案:

答案 0 :(得分:2)

您可以使用CASE

UPDATE tab
SET a = val
   ,b = CASE WHEN b = provided_value THEN new_value ELSE b END
WHERE ...;

从技术上讲,b总是会更新,但会从b - >更改身份。 b

答案 1 :(得分:0)

您可以应用case条件

update table1 set
    a = updatevala,
    b = (case when bcondition then updatevalb else b end)