2012-03-21 59 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'