在MySQL中,ON DUPLICATE KEY UPDATE是一种在插入数据时,如果遇到重复的键值,则执行更新操作的语法。
使用ON DUPLICATE KEY UPDATE时,需要在插入语句中指定要插入的数据和更新的数据。当插入的数据遇到重复键值时,MySQL会执行更新操作,更新指定的列。
以下是ON DUPLICATE KEY UPDATE的用法和示例:
- 创建一个表:
CREATE TABLE students (id INT PRIMARY KEY,name VARCHAR(100),age INT
);
- 插入数据,如果遇到重复的id,则更新name和age的值:
INSERT INTO students (id, name, age)
VALUES (1, 'John', 20)
ON DUPLICATE KEY UPDATE name = VALUES(name), age = VALUES(age);
- 插入多条数据,如果遇到重复的id,则更新name和age的值
INSERT INTO students (id, name, age)
VALUES (1, 'John', 20), (2, 'Jane', 22), (3, 'Mike', 25)
ON DUPLICATE KEY UPDATE name = VALUES(name), age = VALUES(age);
如果id为1的记录已经存在,则更新name和age的值为插入语句中指定的值。如果id为2或3的记录不存在,则插入新的记录。
注意事项:
- ON DUPLICATE KEY UPDATE只适用于有唯一键或主键的表格
- 在UPDATE子句中,可以使用VALUES()函数引用插入语句中的值
- 可以更新多个列的值,每个列之间使用逗号分隔
- 如果没有重复的键值,插入操作将会正常执行,不会执行更新操作