如何刪除違反唯一性約束的數據?MySQL - 刪除違反唯一性約束的數據
我有一張表,我想添加一個唯一性約束。表內數據違反了這個約束,我想刪除它。在這一點上,我不在乎我輸的數據,只是最終的數據是好的。
我第一次嘗試使用'create table like'來複製表,使用alter table添加唯一鍵,並將數據從舊錶複製到新表。
不幸的是,最後一步複製了所有的數據,並沒有抱怨唯一性。
如何刪除違反唯一性約束的數據?MySQL - 刪除違反唯一性約束的數據
我有一張表,我想添加一個唯一性約束。表內數據違反了這個約束,我想刪除它。在這一點上,我不在乎我輸的數據,只是最終的數據是好的。
我第一次嘗試使用'create table like'來複製表,使用alter table添加唯一鍵,並將數據從舊錶複製到新表。
不幸的是,最後一步複製了所有的數據,並沒有抱怨唯一性。
這將添加唯一索引和下降重複:
ALTER IGNORE TABLE your_table ADD UNIQUE INDEX your_table_index (...);
從the docs:
忽視的是一個MySQL擴展到 標準SQL。它控制ALTER TABLE如果在新表中有 唯一鍵存在重複,或者在嚴格模式爲 啓用時發生了 警告,則TABLE將如何工作。如果未指定IGNORE,則 複製將中止並回滾,如果 發生重複鍵錯誤。 如果指定IGNORE ,則只有第一行爲 ,其中 唯一鍵上的行重複,其他衝突行 已刪除。不正確的值是 被截斷爲最接近的匹配值 可接受的值。
你是如何複製數據的?用INSERT IGNORE? – 2010-07-22 22:59:22
不,我認爲我只是使用插入而不忽略 – justinhj 2010-07-27 18:39:52