在沒有臨時表的情況下高效刪除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中文網其他相關文章!