sqlserver CTE删除重复数据的实现方法
更新时间:2025年07月08日 09:24:53 作者:消失的星期六
SQL Server使用CTE与ROW_NUMBER()窗口函数删除重复数据,通过PARTITION BY按重复列分组,标记行号并删除rn>1的记录,保留每组第一条,实现数据去重,本文给大家介绍sqlserver CTE删除重复数据的实现方法,感兴趣的朋友一起看看吧
sqlserver CTE删除重复数据
实现删除重复数据,并保留一条
- 使用
ROW_NUMBER()窗口函数为每一行分配一个行号,按重复列的条件分组; - 使用
CTE来表示重复的行; - 删除行号大于1的行。
WITH CTE AS ( SELECT IOT_TerminalNo,SendDate,EVoltage,ECurrent,CreateTime, ROW_NUMBER() OVER ( PARTITION BY IOT_TerminalNo, SendDate ORDER BY (SELECT 0) ) AS rn FROM Equipment_1001 where --IOT_TerminalNo='Weldjoin-000001' AND SendDate >='2025-04-01 00:00:00.000' AND SendDate<'2025-07-07 13:26:32.830' ) DELETE FROM CTE WHERE rn > 1;
PARTITION BY:按条件分组;rn > 1:删除所有重复的行,只保留每组中的第一行;
SQL server 删除完全重复的数据并保留一条
前提
SQL server 数据库,某张表有主键,且存在多条完全重复的数据,并且重复数据的ID也完全相同,在删除其中一条后,所有的重复数据全都被删除了。
实现删除重复数据,并保留一条
- 使用
ROW_NUMBER()窗口函数为每一行分配一个行号,按重复列的条件分组; - 使用
CTE来表示重复的行; - 删除行号大于1的行。
WITH CTE AS ( SELECT ## 字段 code, timePoint, ROW_NUMBER() OVER ( PARTITION BY code, TimePoint ORDER BY (SELECT 0) ) AS rn FROM table_name ) DELETE FROM CTE WHERE rn > 1;
解释
PARTITION BY:按条件分组;rn > 1:删除所有重复的行,只保留每组中的第一行;
到此这篇关于sqlserver CTE删除重复数据的文章就介绍到这了,更多相关sqlserver cte删除重复数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SQL Server彻底卸载的终极指南(不重装系统,超级干净)
可能大家已经有深刻体会,SQL Server的卸载十分繁琐,最让人头疼的是,出了问题的SQL Server未卸载完全就再次安装将会频频出错,这篇文章主要介绍了SQL Server彻底卸载的终极指南,需要的朋友可以参考下2025-10-10
批量替换sqlserver数据库挂马字段并防范sql注入攻击的代码
有时候网站sqlserver数据库被挂马了,网上的很多软件与方法都是针对text小于8000的,这里的方法貌似可行,需要的朋友可以参考下。2010-04-04
如何把sqlserver数据迁移到mysql数据库及需要注意事项
由于项目起初用的是sqlserver数据库,后来改用了mysql数据库,那么如何把sqlserver迁移mysql呢?对sqlserver数据库迁移感兴趣的朋友可以参考下本篇文章2015-10-10


最新评论