2012-06-13 35 views
3

我有一個包含10列的表,我必須從CSV文件中添加許多行。當然,我不能添加兩個相同的行,所以我需要一個SQL語句,如果整行存在,它將忽略該命令。只有在所有字段完全相同的情況下,INSERT才能被忽略。兩行可能具有相同的字段1字段2,但不是所有字段都相同。我試過INSERT IGNORE但它不起作用。沒有列設置爲UNIQUE,因爲只有整行相同,INSERT必須忽略onyl。如果不存在相同的整行,則MySQL INSERT

你有什麼解決方案?謝謝!

回答

2

根據您的需要在所有列,然後INSERT IGNOREREPLACE INTO上創建組合索引。

docs

如果使用忽略關鍵字,在執行INSERT語句中出現的錯誤都被視爲而不是警告。例如,如果沒有IGNORE,那麼表中現有的UNIQUE索引或PRIMARY KEY值重複的行會導致重複鍵錯誤,並且語句會中止。使用IGNORE時,該行仍未插入,但未發出錯誤。

+0

我加一個索引的使用INSERT忽略所有列,這是行不通的 – ali

+0

您需要獨特的INDEX ... –

+0

是的,但有兩個字段可以有相同的值。只有在整行已存在的情況下才允許INSERT - 新行的每個字段與現有行的每個字段相同 – ali

相關問題