首页 > 数据库 > mysql教程 > 如何使用 ROW_NUMBER() 删除 SQL Server 中的重复记录?

如何使用 ROW_NUMBER() 删除 SQL Server 中的重复记录?

Patricia Arquette
发布: 2025-01-12 12:01:46
原创
327 人浏览过

How to Delete Duplicate Records in SQL Server Using ROW_NUMBER()?

数据完整性:删除 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中文网其他相关文章!

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