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列您想检查什么条件来决定更新哪一列?很好的发现。文档所以你所说的是,如果是真的,会被输入什么,如果是假的,会被输入什么