基於特定欄位刪除 SQL Server 中的重複記錄
假設有一個名為 "Employee" 的表,其中包含一個名為 "EmployeeName" 的欄位。任務是基於 "EmployeeName" 欄位刪除冗餘記錄,得到以下資料:
EmployeeName |
---|
Anand |
Anil |
Dipak |
如何使用 SQL Server 中的 TSQL 透過單一查詢實現此目標?
使用視窗函數的解:
為了解決這個問題,視窗函數是一種可行的方法。視窗函數可讓您對由 OVER 子句定義的分割區內的一組行執行操作。在本例中,分割區由 "EmployeeName" 欄位定義。
以下查詢有效地識別並刪除基於 "EmployeeName" 欄位的重複記錄:
<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>
以上是如何使用單一查詢刪除SQL Server中基於特定欄位的重複記錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!