基于特定字段删除 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中文网其他相关文章!