一尘不染

MySQL:仅在满足条件时更新字段

mysql

是否可以在MySQL中执行UPDATE查询,仅在满足特定条件时才更新字段值?像这样:

UPDATE test
SET
    CASE
        WHEN true
        THEN field = 1
    END
WHERE id = 123

换一种说法:

UPDATE test
SET
    something = 1,        /*field that always gets updated*/
    CASE
        WHEN true
        THEN field = 1    /*field that should only get updated when condition is met*/
    END
WHERE id = 123

正确的方法是什么?


阅读 617

收藏
2020-05-17

共1个答案

一尘不染

是!

这里有另一个例子:

UPDATE prices
SET final_price= CASE
   WHEN currency=1 THEN 0.81*final_price
   ELSE final_price
END

之所以可行,是因为MySQL不会更新该行(如果没有更改),如docs中所述

如果将列设置为其当前值,MySQL会注意到这一点,并且不会对其进行更新。

2020-05-17