首頁 >資料庫 >mysql教程 >如何從沒有主鍵的 SQL 表中刪除重複行?

如何從沒有主鍵的 SQL 表中刪除重複行?

Linda Hamilton
Linda Hamilton原創
2025-01-03 02:35:39351瀏覽

How to Remove Duplicate Rows from a SQL Table Without a Primary Key?

如何從沒有主鍵的SQL 表中刪除重複記錄

在處理缺少主鍵的SQL 表時,處理重複記錄可能會帶來挑戰。但是,有一些有效的方法可以根據特定條件消除重複項。

考慮以下情境:您有一個「員工」表,其中包含「EmpId」、「EmpName」和「EmpSSN」欄位以及一些記錄「EmpId」和「EmpSSN」欄位中包含重複值。要刪除這些重複項,您可以使用以下查詢:

DELETE SUB FROM
(SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt
 FROM employee) SUB
WHERE SUB.cnt > 1

理解查詢:

  • 外部DELETE 語句從'employee' 中刪除行'基於從子查詢檢索的資訊的表。
  • 子查詢計算行數(cnt) 對於「EmpId」、「EmpName」和「EmpSSN」的每個唯一組合。
  • PARTITION BY 子句按這些欄位將記錄分組,以確保為每個不同群組重設行計數。
  • ORDER BY 子句對每個群組內的記錄進行排序,以確保第一行是原始記錄。
  • 子查詢中的 WHERE 子句過濾掉 cnt 大於 1 的行,表示它們是重複的。
  • 外部 DELETE 語句然後使用 FROM 子句將子查詢作為虛擬表 (SUB) 引用,並刪除主「employee」表中的這些行。

此查詢根據“EmpId”的唯一組合有效刪除重複記錄和“EmpSSN”,在沒有主鍵的表中高效地執行資料清理。

以上是如何從沒有主鍵的 SQL 表中刪除重複行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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