INSERT ... ON DUPLICATE KEY UPDATE
这个语法常常使用在 表里面有唯一约束的键,或者主键的表里面。
比如 tb(a,b,c) 其中 a是有唯一键约束的。
insert into tb (a,b,c) values (1,2,3) on duplicate key update b=b+1,c=c+1;
上面这个语句有2层意思:
1.当表tb里面 a 含有1 的时候,相当于
update tb set b=b+1,c=c+1 where a =1;
2.当表tb里面a不含有1的时候
insert into tb (a,b,c) values (1,2,3);
要是a和b都有唯一约束:
那当 a 含有1 或者 b含有2 都相当于 (只要有一个键违反了唯一约束,整个语句都变成update)
update tb set b=b+1,c=c+1 where a =1 or b =2;
其余情况就直接insert