Mysql 插入更新不同的列,同时在单个查询中保持其他所有内容相同

Mysql 插入更新不同的列,同时在单个查询中保持其他所有内容相同,mysql,sql,insert,Mysql,Sql,Insert,假设我有一个查询: 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) 是否可以修改此查

假设我有一个查询:

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更新为我设置的值,而column 4保持不变,而对于某些行,我将column4更新为某些值,而column3保持不变…即。是否可以在一个查询中有选择地更新不同的列,保持其余的列不变,而不将其拆分为多个查询?

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

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>);
插入表格(第1列、第2列、第3列、第4列)
值(val11,val21,val31,val41),(val12,val22,val32,val42)
关于重复密钥更新
第3列=如果(,),
第4列=如果(,);

您的意思是(即)在重复键更新集col3=val31+100、col2=val2+20等上……不,我的意思是,例如:此行(val11、val21、val31、val41)应该只更新第4列,而对于此行(val12、val22、val32、VAL42),它应该只修改第3列您想检查什么条件来决定更新哪一列?很好的发现。文档所以你所说的是,如果是真的,会被输入什么,如果是假的,会被输入什么