2010-06-17 107 views
0

这是我在做什么,现在(nameUNIQUE):重写唯一索引值

SELECT * FROM fruits WHERE name='apple'; 

检查该查询返回任何结果 。如果是的话,不要做任何事情。如果 没有,一个新的值必须插入:

INSERT INTO fruits (name) VALUES ('apple'); 

代替上面是确定该值插入表中没有检查,如果它已经存在?如果名称已经存在于表格中,则会抛出错误,如果不存在,则会插入新记录。

现在我不得不在for循环中插入500条记录,这会导致1000个查询。跳过“已存在”检查可以吗?

回答

4

可以使用忽略功能:

INSERT IGNORE INTO fruits VALUES ('apple') 

如果有一个键冲突,它只是跳过这个值

2

退房

INSERT IGNORE INTO ... 

INSERT ON DUPLICATE KEY UPDATE ... 

第二次见面因为IGNORE语句只是简单地导致mysql发出警告而不是错误

+0

第二种方法是* not *首选,因为OP希望重复条目被跳过,而不是更新。 – BoltClock 2010-06-17 09:58:00

+0

是的,但它可以很容易地更新为自己设置'苹果='苹果' – Gunjan 2010-06-17 10:05:44