使用唯一索引去重
為了防止重複資料插入,錯誤地為欄位A、B建立了普通索引, C、D ,導致2000萬筆記錄的表中存在重複記錄。問題出現了:為這些欄位新增唯一索引會在不影響現有欄位的情況下刪除重複項嗎?
修正索引並處理重複
新增唯一索引不帶 IGNORE 修飾符的 ALTER TABLE 語句將失敗,因為唯一記錄已存在。但是,使用 IGNORE 修飾符將刪除重複項。
MySQL 版本5.7.4 及更高版本的替代方法
對於MySQL 版本5.7.4 及更高版本,其中不支援IGNORE 修飾符,建議使用不同的方法:
使用INSERT IGNORE 刪除重複項的語法
<code class="sql">CREATE TABLE tmp_data SELECT * FROM mytable; TRUNCATE TABLE mytable; ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D); INSERT IGNORE INTO mytable SELECT * FROM tmp_data; DROP TABLE tmp_data;</code>
其他注意事項使用IGNORE 修飾符後將保留哪些重複行。建議先在較小的資料集上進行測試,然後再將解決方案應用於大型表。
以上是唯一索引可以刪除具有現有重複項的表中的重複項嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!