首頁 > 資料庫 > mysql教程 > 如何在不使用臨時表的情況下有效率地刪除MySQL表中的重複記錄?

如何在不使用臨時表的情況下有效率地刪除MySQL表中的重複記錄?

Susan Sarandon
發布: 2025-01-04 03:46:40
原創
1019 人瀏覽過

How Can I Efficiently Remove Duplicate Records from a MySQL Table Without Using Temporary Tables?

在沒有臨時表的情況下高效刪除MySQL 中的重複記錄

發現資料庫中的重複記錄可能是一項挑戰,尤其是在沒有主鍵的情況下。然而,有一些有效的技術可以解決這個問題。

在我們的例子中,我們有一個名為 TableA 的表,其中包含使用者對問卷的回答。由於無意的錯誤,一些用戶提交了重複的回應。我們的目標是刪除這些重複項,同時確保剩餘一行保留下來。

解 1:唯一索引

一種方法是在相關欄位上新增唯一索引在表A中。這將強制這些欄位的唯一性,防止插入額外的重複項。

要達到此目的,請執行以下查詢:

ALTER IGNORE TABLE `TableA`   
ADD UNIQUE INDEX (`member_id`, `quiz_num`, `question_num`, `answer_num`);
登入後複製

解決方案2:主鍵與刪除

或者,我們可以在表上建立主鍵並利用特定查詢來識別和刪除

要建立主鍵,我們可以使用下列查詢:

ALTER TABLE `TableA` ADD PRIMARY KEY (`member_id`, `quiz_num`, `question_num`, `answer_num`);
登入後複製

主鍵就位後,我們可以使用以下查詢刪除重複項:

DELETE FROM member  
WHERE id IN (SELECT * 
             FROM (SELECT id FROM member 
                   GROUP BY member_id, quiz_num, question_num, answer_num HAVING (COUNT(*) > 1)
                  ) AS A
            );
登入後複製

以上是如何在不使用臨時表的情況下有效率地刪除MySQL表中的重複記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板