是否可以在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
正确的方法是什么?
是!
这里有另一个例子:
UPDATE prices SET final_price= CASE WHEN currency=1 THEN 0.81*final_price ELSE final_price END
之所以可行,是因为MySQL不会更新该行(如果没有更改),如docs中所述:
如果将列设置为其当前值,MySQL会注意到这一点,并且不会对其进行更新。