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字段值。

dawei

【声明】:唐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。