如果另一列的新值与当前值不同,则 MySQL 设置列值

fil*_*ilo 3 mysql

我有一个表,其中有一列mycolumn和一列带有布尔标志mycolumn_is_new。当 UPDATE 查询更改第一个的值时,我想将第二个设置为 true。用户可以键入相同的数据或新的数据。

我想出了这个查询,但mycolumn_is_new总是设置为 false :

UPDATE mytable SET
    mycolumn = '1234',
    mycolumn_is_new = IF(mycolumn <> '1234', TRUE, FALSE)
WHERE id = 321
Run Code Online (Sandbox Code Playgroud)

是否可以在单个查询中检查新旧值?

Aki*_*ina 6

SET 部分中的所有表达式都按照它们的编写顺序进行计算。所以mycolumn在第二个表达式中等于在第一个表达式中设置的值。只需切换表达式 -mycolumn_is_new =首先。

是否可以在单个查询中检查新旧值?

是的,使用用户定义的变量。保存旧的,分配新的,使用来自变量的旧和来自字段的新。最简单的任务需要这些方法 - 在一个 UPDATE 中切换两个字段的值。