Mysql 根据主键判断 插入或者更新

有时会遇到一种情况,当数据表不存在某记录时便插入新记录,当数据表中已经存在该记录时则更新该记录。
当指定了ON DUPLICATE KEY UPDATE,当插入新的记录会导致主键列或UNIQUE列出现重复数据时,则对旧的记录执行UPDATE。

例如,有一个计数器表用来记录网站每日的访问数:

CREATE TABLE daily_counter (
	id INT UNSIGNED AUTO_INCREMENT,
	day DATE NOT NULL UNIQUE,
	cnt INT UNSIGNED NOT NULL,
	PRIMARY KEY (id)
);

  更新计数器时,当天的第一次访问在计数器表里插入一条新的记录,后面的访问则只需要更新该记录:

 

INSERT INTO daily_counter(day, cnt)
VALUES(CURDATE(), 1)
ON DUPLICATE KEY UPDATE cnt = cnt + 1;

  

 

posted @ 2022-06-08 15:16  刘小吉  阅读(1068)  评论(0编辑  收藏  举报