对于插入多个列记录,第一次执行查询可以正常工作,但是如果再次执行该查询,则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);
如果从所有列获取相同的记录,则输出应保持不变。
答案 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;