MySQL的INSERT … ON DUPLICATE KEY UPDATE可以实现插入新记录或更新已有的相同主键记录。
基本语法为:
INSERT INTO table ( field1, field2,...fieldn)
VALUES (value1,value2,...valuen)
ON DUPLICATE KEY UPDATE
field1=value1,
field2=value2,
...
fieldn=valuen;
示例:
INSERT INTO users (id, name)
VALUES (1, 'John')
ON DUPLICATE KEY UPDATE
name = 'John';
- 如果id=1的记录不存在,则添加新记录
- 如果id=1的记录已存在,则更新name字段为’John’
因此,该语句可以用来:
- 增加新记录(id不存在)
- 更新记录(id已存在)
主要做到了:
- 根据主键(或唯一索引)判断记录是否存在
- 如果存在则更新,如果不存在则插入
这就允许我们使用单个SQL语句,实现插入或更新操作。
它可以用于:
- 采集统计数
- 用户注册
- 计数器
- 等需要插入或更新的场景。