当前位置: 代码网 > it编程>数据库>MsSqlserver > sqlserver CTE删除重复数据的实现方法

sqlserver CTE删除重复数据的实现方法

2025年07月08日 MsSqlserver 我要评论
sqlserver cte删除重复数据实现删除重复数据,并保留一条使用row_number()窗口函数为每一行分配一个行号,按重复列的条件分组;使用cte来表示重复的行;删除行号大于1的行。with

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也完全相同,在删除其中一条后,所有的重复数据全都被删除了。

实现删除重复数据,并保留一条

  1. 使用 row_number() 窗口函数为每一行分配一个行号,按重复列的条件分组;
  2. 使用 cte 来表示重复的行;
  3. 删除行号大于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删除重复数据内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com