更新前获取字段值

时间:2012-03-21 12:07:21

标签: mysql

有没有办法在更新查询本身之前获取值并更新查询?

例如:

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))

2 个答案:

答案 0 :(得分:5)

重新安排这些套装。

UPDATE t
SET 
field2 = IF (field2 = field1, 'new', field2),
field1 = 'new';

演示:http://sqlfiddle.com/#!2/bb265/1

答案 1 :(得分:0)

以相反的顺序尝试:

UPDATE t SET field2 = IF (field2 = field1, 'new', field2), field1 = 'new'