首页 > 数据库 > mysql教程 > 如何使用单个查询删除SQL Server中基于特定字段的重复记录?

如何使用单个查询删除SQL Server中基于特定字段的重复记录?

Mary-Kate Olsen
发布: 2025-01-12 12:06:44
原创
503 人浏览过

How to Delete Duplicate Records in SQL Server Based on a Specific Field Using a Single Query?

基于特定字段删除 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>
登录后复制

解释:

  • 窗口函数 row_number() 用于为每个分区(由 EmployeeName 定义)中的每条记录分配一个数字排名 - 从 1 开始。
  • 然后,delete 语句将目标指向 rn 大于 1 的行,这些行是重复项。

查看已删除的记录:

要预览将被删除的记录,而无需实际执行 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板