從 MySQL 表中刪除重複行
處理大型資料集時,識別和刪除重複記錄至關重要。本指南將提供一個全面的解決方案,用於從名為「employee」的 MySQL 表中刪除重複行,該表由三個欄位組成:empid、empname 和 empssn。
識別重複記錄
要識別重複記錄,您可以使用以下查詢:
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
此查詢傳回每個唯一empssn 的出現次數。 HAVING 子句過濾掉計數大於 1 的行,有效辨識重複的 empssn 值。
刪除重複記錄
要刪除重複記錄,我們可以使用以下查詢:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT MIN(empid), empssn FROM employee GROUP BY empssn );
但是,如果在DELETE 和子查詢的FROM子句中都指定了目標表(「employee」),MySQL 會拋出錯誤。為了克服這個問題,我們可以將子查詢包裝在派生表中,如下所示:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT empid, empssn FROM ( SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn ) X );
此修改後的查詢有效地刪除了重複記錄,同時避免了目標表衝突。因此,資料庫僅保留每個唯一 empssn 值具有最小 empid 的記錄。
以上是如何從 MySQL 表中刪除重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!