create table test(a int,c int);

insert into test(a,c) values(1,3) on duplicate key update c=c+1;

如果INSERT多行记录(假设 a 为主键或 a 是一个 UNIQUE索引列):

insert into test(a,c) values(1,3),(1,7) on duplicate key update c=c+1;

执行后, c 的值会变为 4 (第二条与第一条重复, c 在原值上+1).

insert into test(a,c) values(1,3),(1,7) on duplicate key update c=values(c);

执行后, c 的值会变为 7 (第二条与第一条重复, c 在直接取重复的值7). 

这个语法和适合用在需要 判断记录是否存在,不存在则插入存在则更新的场景