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;

发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。