MySQL: insert 语句的 on duplicate key update

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Next_Second/article/details/81273607

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)

更多文章

猜你喜欢

转载自blog.csdn.net/Next_Second/article/details/81273607