2012-03-21 48 views
3

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

例如:

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

回答

0

尝试以相反的顺序:

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