“ ON DUPLICATE KEY UPDATE”不适用于多列

时间:2019-02-18 08:12:02

标签: mysql

对于插入多个列记录,第一次执行查询可以正常工作,但是如果再次执行该查询,则ON DUPLICATE KEY UPDATE对于相同的记录将不起作用。它将再次插入相同的值。

**第一个值“ 2”是主键自动递增**

INSERT INTO info(id, docid, deptid, catid, name) 
VALUES (2,5,2,2,'John Adison')
ON DUPLICATE KEY UPDATE docid = concat(docid,',',5), deptid = concat(deptid,',',2), catid = concat(catid,',',2);

enter image description here

如果从所有列获取相同的记录,则输出应保持不变。

1 个答案:

答案 0 :(得分:-1)

如果您打算在发现重复的密钥时忽略插入(不进行更新),则可以使用IGNORE

INSERT IGNORE INTO my_table 
  ( unique_index_column, other_column ) VALUES( 1, 'other value' );

但是这有一个缺点,它会忽略所有插入错误。或者,您可以使用

INSERT INTO table_tags (id, docid, deptid, catid, name)  VALUES (2,5,2,2,'John Adison')
   ON DUPLICATE KEY UPDATE name=name;
相关问题