2016-12-20 99 views

回答

1

我認爲你可以做到。如果你這樣做:

ON DUPLICATE KEY UPDATE 
    A = A + 1, B = B * 2, 
    C = A + B 

我相信更新從左到右執行。所以當它到達C = A + B時,AB包含新值。

+0

哦,似乎工作。方便合理,謝謝! – zojwek

+0

'C = VALUES(A)+ VALUES(B)'會更確定一些,因爲['VALUES()'函數](http://dev.mysql.com/doc/refman/5.7/en/ miscellaneous-functions.html#function_values)保證提供新的值,而從左到右的行爲更多地是(非)幸運的事故。在標準的SQL中,'UPDATE t1 SET b = a,a = b'轉置a和b的值,但是在MySQL中它將它們都設置爲a,因爲它取值爲「old a」,而「new b」賦值運算符的右側。重新排序查詢和代碼中斷。 –

+0

@ Michael-sqlbot如果沒有重複,'VALUES()'函數會獲取已插入列中的值,但它不會從UPDATE子句中獲取新值。 – Barmar