2010-06-17 93 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