mysql ON DUPLICATE KEY UPDATE 语法
时间: 2024-08-19 10:02:01 浏览: 34
MySQL的`ON DUPLICATE KEY UPDATE`语句是在使用INSERT语句向表中插入数据时,如果遇到主键或唯一索引的冲突(即重复键值),则执行指定的UPDATE操作。这样可以避免插入重复记录时产生错误。
具体语法如下:
```sql
INSERT INTO table_name (column1, column2, ...)
VALUES (value1, value2, ...)
ON DUPLICATE KEY UPDATE
column1 = value1, column2 = value2, ...;
```
这条语句的意思是,如果插入的记录导致主键或唯一索引重复,则会更新现有的行而不是抛出错误。在`ON DUPLICATE KEY UPDATE`部分,可以指定一个或多个字段的更新操作。这些字段的值可以是新的值,也可以是函数调用,甚至是`VALUES(column_name)`这样的函数调用,它代表插入语句中提供的对应列的值。
例如,如果你想要在用户表中插入用户信息,并且如果用户已存在(假设以`user_id`作为唯一索引),则更新用户的邮箱地址,你可以写如下SQL语句:
```sql
INSERT INTO users (user_id, email)
VALUES (123, 'new_email@example.com')
ON DUPLICATE KEY UPDATE email = VALUES(email);
```
这条语句会尝试插入一条新的用户记录,如果`user_id`为123的用户已经存在,那么就将这个用户的`email`字段更新为`new_email@example.com`。