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

DDD
發布: 2024-11-03 04:59:02
原創
949 人瀏覽過

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

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