INSERT INTO…ON DUPLICATE KEY UPDATE
解释: 如果记录不存在就进行插入,否则进行修改
如果insert的数据会引起唯一索引(包括主键索引)的冲突,即这个唯一值重复了(已经存在),则不会执行insert操作,而执行后面的update操作。
好处: 原本需要三条操作数据库的语句,现在一句实现;
案例:
建立test表,a为主键(唯一不能重复):
create table test(
a int not null primary key,
b int not null
)
test表有两条数据,
insert into test values(1,1);
insert into test values(2,2);
执行
insert into test (a,b) values (2,2) on duplicate key update b = b + 1;
由于 a=2 的记录已经存在,所以执行后面的修改操作;
结果:
select * from test;
+---+---+
| a | b |
+---+---+
| 1 | 1 |
| 2 | 3 |
+---+---+