資料完整性:刪除 SQL Server 中的重複項目
維護乾淨有效率的資料庫需要定期刪除重複記錄。 這對於資料完整性和最佳資料庫效能至關重要。 當存在相同條目時(例如,多名員工同名),消除冗餘至關重要。
SQL Server 使用視窗函數和 DELETE 語句提供了強大的解決方案。 視窗函數提供了跨相關行執行計算的能力。
為了說明這一點,讓我們考慮根據 EmployeeName
列刪除重複條目。 ROW_NUMBER()
函數為分區內的每一行(一組相同的 EmployeeName
值)分配唯一的排名。 這使我們能夠選擇性地刪除重複項。
這是 T-SQL 查詢:
<code class="language-sql">DELETE x FROM ( SELECT *, RN = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId) FROM Employee ) x WHERE RN > 1;</code>
此查詢的功能如下:子查詢建立一個臨時表,套用按 ROW_NUMBER()
分區的 EmployeeName
並按 empId
排序。這會為每位員工姓名分配一個唯一的排名 (RN),並按順序對重複項進行編號。
然後,DELETE
語句以該臨時表(別名為「x」)為目標,並刪除 RN 大於 1 的所有行。這實際上只保留每個 EmployeeName
的第一個實例,刪除所有後續重複項。
執行前驗證:
在執行DELETE
語句之前,驗證其影響至關重要。 執行此 SELECT
語句:
<code class="language-sql">SELECT * FROM ( SELECT *, RN = ROW_NUMBER() OVER (PARTITION BY EmployeeName ORDER BY empId) FROM Employee ) x WHERE RN > 1;</code>
這將預覽要刪除的記錄。 確認準確性後,執行 DELETE
語句以從 Employee
表中永久刪除重複記錄。
以上是如何使用 ROW_NUMBER() 刪除 SQL Server 中的重複記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!