有人说:程序员都是懒人:-)这话不假,尤其是写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!!
那怎么用jdbc来执行这段sql语句呢,好像会报错
底下这句可以啊INSERT INTO ipstats VALUES('192.168.0.1', 1) ON DUPLICATE KEY UPDATE clicks=clicks+1; JDBC注意最后分号去掉。类似的你要根据实际表结构改的。有问题欢迎再讨论~