MySQL条件插入,如果有重复则更新-多条记录

5
我该如何在多值插入时使用ON DUPLICATE UPDATE呢?
INSERT INTO tbl_name 
  (key_id,field1,filed2) 
VALUES
  (1,2,3),
  (1,5,6),
  (1,8,9);

你的预期结果是什么?我只能让MySQL允许(1,5,6) ON DUPLICATE KEY UPDATE key_id=key_id+1,但在执行时,表中只有一行数据,数值为2, 2, 3 - OMG Ponies
好的,SQL只是一个例子,但期望的结果是运行一个查询,如果有多个值,则插入新值,如果有重复则更新。因此,如果key_id 1、3和5已经在数据库中,并且我运行INSERT命令来插入2、3、4和6,则2、4和6应该被插入,而3应该被更新,因为它是重复的。 - Phill Pafford
1个回答

11

我现在无法尝试,但是你不能使用这个语法吗?

INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)
  ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

手册上了解到的?

那么你的语法看起来应该像这样:

INSERT INTO tbl_name
  (key_id,field1,filed2) 
VALUES
  (1,2,3),
  (1,5,6),
  (1,8,9)
ON DUPLICATE KEY
  UPDATE field1=VALUES(field1), field2=VALUES(field2);

我一定错过了这个,谢谢。 - Phill Pafford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接