有没有办法在更新查询本身中获取之前的值并更新查询?
例如:
UPDATE t SET field1 = 'new', field2 = IF (field2 = field1, 'new', field2))
在“field2 = field1”中,我想检查字段的先前值。 Mysql 的工作方式是更新 field1,然后与新值进行比较,因此比较始终是“IF (field2 = 'new', ...”
所以我想要类似的东西
UPDATE t SET field1 = 'new', field2 = IF (field2 = PREVIOUS_VALUE(field1), 'new', field2))
更新:
有时在更复杂的例子中交换可能不起作用,当我想要这样的时候:
UPDATE t SET field1 = IF (field1 = PREVIOUS_VALUE(field2), 'new', field1)), field2 = IF (field2 = PREVIOUS_VALUE(field1), 'new', field2))
最佳答案
只需重新排列这些集合即可。
UPDATE t
SET
field2 = IF (field2 = field1, 'new', field2),
field1 = 'new';
关于mysql - 更新前获取字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9804302/