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

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

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

1
2
3
4
5
6
CREATE TABLE daily_counter (
    id INT UNSIGNED AUTO_INCREMENT,
    day DATE NOT NULL UNIQUE,
    cnt INT UNSIGNED NOT NULL,
    PRIMARY KEY (id)
);

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

 

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

  

 

posted @   刘小吉  阅读(1095)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
历史上的今天:
2017-06-08 网站性能优化法则
2015-06-08 JS + flash 复制
2015-06-08 WCF 客户端调用服务操作的两种方法
点击右上角即可分享
微信分享提示