首頁 >資料庫 >mysql教程 >如何從 MySQL 表中刪除重複行?

如何從 MySQL 表中刪除重複行?

DDD
DDD原創
2024-11-03 04:59:02982瀏覽

How to Delete Duplicate Rows from a MySQL Table?

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn