高效率刪除 SQL Server 中的重複行
想像一個包含 Employee
欄位的 EmployeeName
表。 目標是僅根據 EmployeeName
欄位刪除重複行。 這可以透過在 SQL Server 中使用簡潔的 T-SQL 查詢來實現。
解:
利用視窗函數提供了一個優雅的解決方案。以下查詢為每個 rn
群組中的每筆記錄分配一個唯一的行號 (EmployeeName
),按 empId
排序。 隨後,rn
大於 1 的行(即重複項)將被刪除。
<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>
要在執行 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>
以上是如何使用單一 T-SQL 查詢刪除 SQL Server 中的重複記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!