2016-12-20 7 views
0

あなたは列A、B、Cを持っているとしましょう。重複キーで、A = {ここにいくつかのステートメント}、B = {ここにいくつかのステートメント}、C = New_A + New_Bとしましょう。 Cの新しい値を決定するために、AとBの新しい値を使うことができますか?あるいは新しいAとBの式を再入力する必要がありますか?ありがとう!重複したキー更新で更新値を再利用できますか?

答えて

1

私はあなたがそれを行うことができると思います。あなたがそうなら:

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

私は更新が左から右に実行されると思います。したがって、C = A + Bになると、ABに新しい値が含まれます。

+0

ああ、うまくいくようです。便利で論理的な、ありがとう! ['VALUES()'関数](http://dev.mysql.com/doc/refman/5.7/en/)より、 'C = VALUES(A)+ VALUES(B)'の方がもう少し決定的になります。 – zojwek

+0

miscellaneous-functions.html#function_values)は新しい値を提供することが保証されていますが、左から右への動作は幸運な事故ではあります。標準のSQLでは、 'UPDATE t1 SET b = a、a = b'はaとbの値を転置しますが、MySQLでは "old a"の値を取っているので "a"代入演算子の右辺。クエリとコード区切りの順序を変更します。 –

+0

@ Michael-sqlbot 'VALUES()'関数は、重複がなければ列に挿入されるはずの値をピックアップし、 'UPDATE'節から新しい値を取得しません。 – Barmar

関連する問題