首頁 > 資料庫 > mysql教程 > 如何在不使用臨時表的情況下從 MySQL 表中刪除重複行?

如何在不使用臨時表的情況下從 MySQL 表中刪除重複行?

Susan Sarandon
發布: 2024-12-26 12:26:10
原創
223 人瀏覽過

How to Remove Duplicate Rows from MySQL Tables Without Using Temporary Tables?

在沒有臨時表的情況下從MySQL 表中清除重複項

MySQL 表通常包含重複記錄,這些記錄可能會擾亂資料庫並損害資料完整性。刪除這些重複項對於保持資料準確性和提高查詢效能至關重要。本文探討了一種在不使用臨時表的情況下消除重複記錄的有效方法。

建立唯一索引

最簡單的方法是在定義表中唯一性的資料列上建立唯一索引。對於TableA表,以下索引可確保member_id、quiz_num、question_num和answer_num的組合是唯一的:

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

索引建立後,MySQL會自動維護其完整性,防止重複記錄插入。

主鍵刪除

或者,在表格中加入主鍵還可以防止重複插入。以下查詢根據主鍵刪除重複記錄:

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
);
登入後複製

DELETE 語句根據 id 欄位刪除記錄,確保僅保留一筆具有相同唯一列組合的記錄。

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

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