MySQL实现(Duplicate key)如果不存在则插入,存在则更新

有人说:程序员都是懒人:-)这话不假,尤其是写sql语句的时候,总想偷懒。

场景:一个表中存在主键,如果某主键为key的记录不存在则插入,如果存在则更新,如果是以前的方法,需要

if(select(….))

update…..

else

insert….

3条SQL语句

其实,MySQL支持一种“insert …. on duplicate key update”的语法,

如下:

INSERT INTO ipstats VALUES(‘192.168.0.1’, 1) ON DUPLICATE KEY UPDATE clicks=clicks+1;

这个很强大吧,不过要注意表必须存在主键(就是insert 的时候会产生 Duplicate Key这种错误)

需要提醒的是:INSERT ON DUPLICATE KEY UPDATE….以及INSERT IGNORE都会导致表中子增id自动+1!!

2 thoughts on “MySQL实现(Duplicate key)如果不存在则插入,存在则更新

    1. coder4coder4

      底下这句可以啊INSERT INTO ipstats VALUES(‘192.168.0.1’, 1) ON DUPLICATE KEY UPDATE clicks=clicks+1; JDBC注意最后分号去掉。类似的你要根据实际表结构改的。有问题欢迎再讨论~

      Reply

Leave a Reply

Your email address will not be published.