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

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

  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删除重复数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SQL Server 数据库中的收缩数据库和文件操作

    SQL Server 数据库中的收缩数据库和文件操作

    收缩数据文件通过将数据页从文件末尾移动到更靠近文件开头的未占用的空间来恢复空间,在文件末尾创建足够的空间后,可取消对文件末尾的数据页的分配并将它们返回给文件系统,本文给大家介绍SQL Server 数据库中的收缩数据库和文件的相关知识,一起看看吧
    2023-07-07
  • SQL where条件和jion on条件的详解及区别

    SQL where条件和jion on条件的详解及区别

    这篇文章主要介绍了SQL where条件和jion on条件的详解及区别的相关资料,这里举例说明该如何区分,需要的朋友可以参考下
    2016-12-12
  • Sql Server 开窗函数Over()的使用实例详解

    Sql Server 开窗函数Over()的使用实例详解

    这篇文章主要介绍了Sql Server 开窗函数Over()的使用,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • SQL Server查看login所授予的具体权限问题

    SQL Server查看login所授予的具体权限问题

    在SQL Server数据库中如何查看一个登录名(login)的具体权限呢,下面脚本之家小编给大家带来了SQL Server查看login所授予的具体权限问题,感兴趣的朋友一起看看吧
    2019-09-09
  • sqlserver只有MDF文件恢复数据库的方法

    sqlserver只有MDF文件恢复数据库的方法

    因为只有mdf文件,想恢复数据库,大家可以用下面的代码先测试
    2008-10-10
  • SQL Server创建用户定义函数

    SQL Server创建用户定义函数

    这篇文章介绍了SQL Server创建用户定义函数的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • SQL 窗口函示例数详解

    SQL 窗口函示例数详解

    窗口函数(Window Function),也叫OLAP函数(Online Anallytical Processing,联机分析处理)或者分析函数(Analytic Function),可以对数据库数据进行实时分析处理,这篇文章主要介绍了SQL 窗口函数详解,需要的朋友可以参考下
    2024-06-06
  • 分享Sql日期时间格式转换

    分享Sql日期时间格式转换

    这篇文章介绍了Sql日期时间格式转换,有需要的朋友可以参考一下
    2013-08-08
  • Oracle与SqlServer的区别大吗

    Oracle与SqlServer的区别大吗

    这篇文章主要介绍了Oracle与SqlServer的区别大吗,差异主要表现在数据类型区别、数据表个数查询的区别以及oracle区分表字段的大小写,SQL Server 不区分表字段的大小写,具体细节跟随小编一起学习下吧
    2024-02-02
  • 谈谈sqlserver自定义函数与存储过程的区别

    谈谈sqlserver自定义函数与存储过程的区别

    这篇文章主要介绍了谈谈sqlserver自定义函数与存储过程的区别,需要的朋友可以参考下
    2014-09-09

最新评论