MySQL判断当记录不存在时insert,记录存在时update
MySQL当记录不存在时insert,当记录存在时update
如果指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。
下面举例说明:
设备使用表equipment_used_log,主键id、代理商、设备、使用日期。
下图三个列定义成唯一索引。
- 业务需求是记录每个代理商的某一设备每天的使用量
按照最一般的方法是先查询是否存在,存在则更新不存在则插入。这样会有并发问题。加同步块会影响性能。
使用下列语句即可实现:
INSERT INTO equipment_used_log(id,agent_info_id,equipment_id,log_date,USED_NUM)
VALUES ('1238','1','1','2018-12-18',0)
ON DUPLICATE KEY UPDATE USED_NUM=USED_NUM+1;