营销型网站四大元素,工业设计产品图,广州地铁微博,做网站优化哪家好MySQL INSERT插入条件判断#xff1a;如果不存在则插入#xff08;转#xff09;
我们经常需要进行sql的批量插入#xff0c;要求#xff1a;该条记录不存在则插入#xff0c;存在则不插入。如果使用一条INSERT语句实现呢#xff1f; ####普通的 INSERT INTO 插入…MySQL INSERT插入条件判断如果不存在则插入转
我们经常需要进行sql的批量插入要求该条记录不存在则插入存在则不插入。如果使用一条INSERT语句实现呢 ####普通的 INSERT INTO 插入
INSERT INTO card(cardno, cardnum) VALUES(1111, 100);
INSERT INTO card(cardno, cardnum) VALUES(2222, 200);
...于普通的 INSERT 插入如果想要保证不插入重复记录我们只有对某个字段创建唯一约束实现比如cardno卡号不能重复
那有没有不创建唯一约束仅通过 INSERT INTO 一条语句实现的方案呢
答案有的** INSERT INTO IF EXISTS** 具体语法如下
INSERT INTO table(field1, field2, fieldn) SELECT field1, field2, fieldn FROM DUAL WHERE NOT EXISTS(SELECT field FROM table WHERE field ?)其中的 DUAL 是一个临时表不需要物理创建这么用即可。
针对上面的card示例的改造如下
INSERT INTO card(cardno, cardnum) SELECT 111, 100 FROM DUAL WHERE NOT EXISTS(SELECT cardno FROM card WHERE cardno 111);
INSERT INTO card(cardno, cardnum) SELECT 222, 200 FROM DUAL WHERE NOT EXISTS(SELECT cardno FROM card WHERE cardno 222);