從MySQL 中的表中刪除重複行
處理包含重複記錄的表時,有必要刪除它們以維護資料誠信和效率。在 MySQL 中,實現這一點涉及識別和刪除重複行,這個過程可以透過特定查詢來完成。
在您的例子中,您已經使用以下查詢根據字段empssn 確定了重複記錄:
SELECT COUNT(empssn), empssn FROM employee GROUP BY empssn HAVING COUNT(empssn) > 1
要刪除重複記錄,您嘗試了以下查詢:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT MIN(empid), empssn FROM employee GROUP BY empssn );
但是,您遇到了錯誤,因為MySQL 不允許要在更新查詢的FROM 子句中指定的目標表。
要解決此問題,一種方法是將子查詢包裝在派生表中:
DELETE FROM employee WHERE (empid, empssn) NOT IN ( SELECT empid, empssn FROM ( SELECT MIN(empid) AS empid, empssn FROM employee GROUP BY empssn ) X );
透過使用此修改查詢後,您可以有效地建立一個臨時的派生表(X),其中包含來自員工表的必要資料。然後,主 DELETE 查詢可以引用此衍生表,根據 empid 和 empssn 的唯一組合刪除重複行。此方法應該可以解決您遇到的錯誤,並允許您成功刪除重複記錄。
以上是當目標表位於 FROM 子句中時,如何刪除 MySQL 表中的重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!