首页 > 数据库 > mysql教程 > 如何在保留一个实例的同时删除 T-SQL 中的重复行?

如何在保留一个实例的同时删除 T-SQL 中的重复行?

Patricia Arquette
发布: 2025-01-15 16:09:44
原创
191 人浏览过

How Can I Delete Duplicate Rows in T-SQL While Keeping One Instance?

T-SQL:清除冗余行同时保留单行记录

维护数据完整性至关重要,消除重复行是其中一个关键步骤。在本例中,由于数据录入错误,出现了重复记录。您的目标是消除这些多余的行,但需要精确操作——确保保留单个重复项。

解决方案:使用 CTE 和 ROW_NUMBER()

在 SQL 2005 或更高版本中,您可以结合使用公用表表达式 (CTE) 和 ROW_NUMBER() OVER 子句来实现您的目标。CTE 充当过滤器,隔离相关数据,而 ROW_NUMBER() 函数为预定义分区组(在本例中为关键列)中的每一行分配一个序列号。

此技术使您可以根据所需的条件隔离重复行。通过附加一个 WHERE 子句,其中包含检查行号是否大于 1 的条件,您可以精确定位并删除多余的行。

实现

<code class="language-sql">WITH cte AS (
SELECT [foo], [bar],
row_number() OVER(PARTITION BY [foo], [bar] ORDER BY [baz]) AS [rn]
FROM [TABLE]
)
DELETE FROM cte WHERE [rn] > 1</code>
登录后复制

自定义选项

CTE 中的 ORDER BY 子句提供了对行进行排序的灵活性。如果您的目标是保留最新的行,请按相关的日期时间列以降序排列结果(例如,ORDER BY [baz] DESC)。请记住,排序标准的选择完全可以根据您的具体需求进行自定义。

以上是如何在保留一个实例的同时删除 T-SQL 中的重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!

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