唯一索引可以刪除具有現有重複項的表中的重複項嗎?

Susan Sarandon
發布: 2024-10-25 08:10:17
原創
248 人瀏覽過

Can a Unique Index Remove Duplicates in a Table with Existing Duplicates, and How?

使用唯一索引去重

為了防止重複資料插入,錯誤地為欄位A、B建立了普通索引, C、D ,導致2000萬筆記錄的表中存在重複記錄。問題出現了:為這些欄位新增唯一索引會在不影響現有欄位的情況下刪除重複項嗎?

修正索引並處理重複

新增唯一索引不帶 IGNORE 修飾符的 ALTER TABLE 語句將失敗,因為唯一記錄已存在。但是,使用 IGNORE 修飾符將刪除重複項。

MySQL 版本5.7.4 及更高版本的替代方法

對於MySQL 版本5.7.4 及更高版本,其中不支援IGNORE 修飾符,建議使用不同的方法:

  1. 將資料複製到臨時表。
  2. 截斷原始表。
  3. 建立唯一索引.
  4. 使用 INSERT 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!