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中文網其他相關文章!