MySQL: insert 语句的on duplicate key update
在mysql中,insert语句有这样的用法insert into <table_name> values (v1, v2, v3) on duplicate key update ...
这样的含义是:如果主键重复,或者unique key重复,则执行update语句;否则执行insert语句。
eg.
比如,有一个表people:
create table people(
id int not null auto_increment,
name varchar(100) not null,
age int,
primary key(id)
);
已经有数据:
mysql> select * from people;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 3 | John | 30 |
| 4 | \James | 33 |
+----+--------+------+
2 rows in set (0.00 sec)
然后,再执行insert into people (id, name, age) values (3, 'Jack', 21) on duplicate key update name = 'Jack', age = 21;语句的时候,因为已经存在主键3了,所以不执行insert语句,而执行update语句:
mysql> insert into people (id, name, age) values (3, 'Jack', 21) on duplicate key update name = 'Jack', age = 21;
Query OK, 2 rows affected (0.02 sec)
mysql> select * from people;
+----+--------+------+
| id | name | age |
+----+--------+------+
| 3 | Jack | 21 |
| 4 | \James | 33 |
+----+--------+------+
2 rows in set (0.00 sec)
本文介绍MySQL中使用insert...on duplicate key update语句的技巧。当主键或唯一键冲突时,该语句会更新现有记录而不是插入新记录,避免数据冗余。通过示例展示如何在实际场景中应用这一特性。
1271

被折叠的 条评论
为什么被折叠?



