0

次のクエリがあるとします。

INSERT INTO TABLE (column1, column2, column3, column4) VALUES

(val11, val21, val31, val41),
(val12, val22, val32, val 42)
          ....
And then I put in a whole bunch of more values

ON DUPLICATE KEY UPDATE (some update clause)

このクエリを変更して、一部の行 (重複キーであると仮定) について、列 3 が設定した値に更新されるように設定することは可能ですか? 列 4 はそのままですが、一部の行では更新しますcolumn4 を特定の値に変更し、column3 はそのままにします...つまり。この単一のクエリ内で異なる列を選択的に更新し、残りを複数のクエリに分割せずにそのままにすることは可能ですか?

4

1 に答える 1

1

MySQLはDUPLCIATEKEYUPDATE句で条件付きロジックの実行をサポートしているようです

http://thewebfellas.com/blog/2010/1/18/conditional-duplicate-key-updates-with-mysql

IFを使用すると、「if-else」パラメーターを指定できます。だから私はあなたがこのようなことをすることができると思います

INSERT INTO table (column1, column2, column3, column4)
VALUES (val11, val21, val31, val41), (val12, val22, val32, val42)
ON DUPLICATE KEY UPDATE
column3 = IF(<some_condition>, <new_value>, <cur_value>),
column4 = IF(<some_condition>, <new_value>, <cur_value>);
于 2012-06-13T20:22:54.103 に答える