在SQL 中刪除沒有主鍵的重複記錄
重複記錄會對資料完整性帶來挑戰,導致結果不準確和數據不一致。在表缺少主鍵的情況下,識別和刪除重複記錄可能會更加複雜。
在缺少主鍵的情況下,消除重複記錄的一種方法是識別特定欄位中具有匹配值的記錄,例如員工 ID 和社會安全號碼。為了實現這一點,可以使用子查詢根據所需的條件對錶進行分區,並為每個記錄分配一個序號。
然後可以使用 DELETE 語句透過篩選來刪除具有重複欄位值的記錄行號大於 1 的行。這可確保僅保留每個唯一值集的第一次出現。
考慮以下 SQL查詢:
DELETE SUB FROM (SELECT ROW_NUMBER() OVER (PARTITION BY EmpId, EmpName, EmpSSN ORDER BY EmpId) cnt FROM Employee) SUB WHERE SUB.cnt > 1
在此查詢中,子查詢計算每筆記錄的行號,並按 EmpId、EmpName 和 EmpSSN 欄位進行分區。 ORDER BY 子句確保行號依序分配。然後,DELETE 語句會刪除所有行號大於 1 的記錄,從而有效刪除重複項。
以上是如何刪除沒有主鍵的SQL表中的重複記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!