这就是我现在正在做的事情(name
是UNIQUE
):
SELECT * FROM fruits WHERE name='apple';
检查查询是否返回任何内容 结果。如果是,请不要做任何事情。如果 不,必须插入新值:
INSERT INTO fruits (name) VALUES ('apple');
可以将值插入表中而不检查它是否已存在,而不是上面的代码?如果表中已存在该名称,则将引发错误,如果不存在,则将插入新记录。
现在我不得不在for循环中插入500条记录,这会产生1000条查询。可以跳过“已存在”检查吗?
答案 0 :(得分:4)
您可以使用IGNORE功能:
INSERT IGNORE INTO fruits VALUES ('apple')
如果存在密钥违规,则只会跳过此值
答案 1 :(得分:2)
结帐
INSERT IGNORE INTO ...
和
INSERT ON DUPLICATE KEY UPDATE ...
第二种方法是首选方法,因为IGNORE语句只会导致mysql发出警告而不是错误