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

发布时间:2020-05-15 发布网站:脚本之家
价值2580元廖雪峰前端视频终终终于免费啦!
脚本之家收集整理的这篇文章主要介绍了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字段值。

总结

以上是脚本之家为你收集整理的mysql怎样用一条SQL实现有记录则更新,没有则添加新记录全部内容,希望文章能够帮你解决mysql怎样用一条SQL实现有记录则更新,没有则添加新记录所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入脚本之家官方QQ群:1065694478