高效删除 SQL Server 中的重复行,同时保留单行
数据完整性在数据库管理中至关重要。 本文解决了从 SQL Server 表中删除重复行同时确保每个唯一数据集至少保留一个实例的常见问题。 T-SQL 使用公用表表达式 (CTE) 提供了一种简单的解决方案。
CTE 中的 OVER
子句是此过程的关键。 这是一个说明性示例:
<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 为由列 rn
和 [foo]
定义的组中的每一行分配唯一的行号 ([bar]
)。 ORDER BY [baz]
子句确定保留每个组中的哪一行; 您应该根据您的具体需求进行调整。 然后,DELETE
语句会删除 rn
大于 1 的所有行,为 [foo]
和 [bar]
的每个唯一组合仅留下一个代表行。
此方法提供了一种有效且可靠的方法来维护 SQL Server 数据库中的数据清洁度和准确性。
以上是如何在保留一行的同时删除SQL Server中的重复行?的详细内容。更多信息请关注PHP中文网其他相关文章!