加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

mysql怎样用一条SQL实现有记录则更新,没有则添加新记录

发布时间:2020-12-25 08:23:15 所属栏目:编程 来源:网络整理
导读:《mysql怎样用一条SQL实现有记录则更新,没有则添加新记录》要点: 本文介绍了mysql怎样用一条SQL实现有记录则更新,没有则添加新记录,希望对您有用。如果有疑问,可以联系我们。 在程序开发中,经常会有这种使用场景,就是先判断一下数据库中有没有这个产

《mysql怎样用一条SQL实现有记录则更新,没有则添加新记录》要点:
本文介绍了mysql怎样用一条SQL实现有记录则更新,没有则添加新记录,希望对您有用。如果有疑问,可以联系我们。

在程序开发中,经常会有这种使用场景,就是先判断一下数据库中有没有这个产品或内容,如果没有就插入新的记录。如果有,就直接更新那一条记录而不插入。


普通做法是连接2次数据库,这样效率就慢了。下面是MYSQL的做法,用一条命令完成。


mysql 有记录则更新,没有则添加新记录 :


表中必須包含主鍵PRIMARY或唯一unique的字段


INSERT INTO table (primarykeycol,col1,col2) VALUES (1,2,3) ON DUPLICATE KEY UPDATE col1=0,col2=col2+1


当表中已经存在主键primarykeycol值为1的记录时,则将会更新而不会添加。


又如:

INSERT INTO  `imgtoday` ( `t_memid`,`atype`, `picNum`)  
VALUES ( ?, ?, 1) ON DUPLICATE KEY UPDATE `picNum`= `picNum`+1';

其中`t_memid`是主键。如果插入时发现有该主键值的记录时,就把后面字段PICNUM加1


要注意的事,并非要主键才行,只要SQL中有独一无非的UNIQUE索引即可。比如下面一条:


INSERT INTO  msgread (`mem`, `readed`)  VALUES (? , ? ) ON DUPLICATE KEY UPDATE  `readed`=?

这条SQL中,mem字段是UNIQUE索引,主键是另一个字段,它的意思是插入某个会员到表msgread,如果已经有这个会员就直接更新readed字段值。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读