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)

是否可以修改此查询,以便对于某些行(假设它们是重复键),我设置它以便 column3 更新为我设置的值,而第 4 列保持原样,而对于某些行,我更新column4 到某些值,而 column3 保持原样......即。是否可以有选择地更新这个单个查询中的不同列,而其余部分保持原样而不将其拆分为多个查询?

4

1 回答 1

1

看起来 MySQL 支持在 DUPLCIATE KEY UPDATE 子句中执行条件逻辑

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 回答