我有一个表,其中有一列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)
是否可以在单个查询中检查新旧值?
SET 部分中的所有表达式都按照它们的编写顺序进行计算。所以mycolumn
在第二个表达式中等于在第一个表达式中设置的值。只需切换表达式 -mycolumn_is_new =
首先。
是否可以在单个查询中检查新旧值?
是的,使用用户定义的变量。保存旧的,分配新的,使用来自变量的旧和来自字段的新。最简单的任务需要这些方法 - 在一个 UPDATE 中切换两个字段的值。