当前位置: 首页
数据库
sqlserverCTE删除重复数据的实现方法

sqlserverCTE删除重复数据的实现方法

热心网友 时间:2026-04-19
转载

SQL Server 使用 CTE 高效删除重复数据

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

处理数据库中的重复记录,核心目标是在识别出重复项后,为每组保留唯一的一条数据。利用 SQL Server 的 CTE(公用表表达式)可以清晰、高效地完成这一任务,具体操作可分为三个步骤:

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

  • 首先,使用ROW_NUMBER()窗口函数作为“编号工具”。它的作用是为表中的每一行数据分配一个序号,关键点在于按照您指定的重复判定列(例如设备编号和发送日期)进行分组排序。
  • 接着,通过CTE创建一个临时的、可重用的结果集。这相当于建立了一个清晰的数据操作视图,便于后续处理。
  • 最后,执行删除命令:仅保留每组中序号为1的原始记录,而将组内序号大于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 数据表中虽然定义了主键,但表中却存在多条所有字段值都完全一致的记录——包括主键字段本身。此时,若直接按主键执行删除操作,可能导致所有重复行被一并删除,造成数据丢失。因此,需要一种更安全的去重方法。

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

应对这种主键重复的复杂场景,上述基于 CTE 和窗口函数的方案依然是最佳实践。其操作流程保持一致:

  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:这是精准定位重复组的关键。通过它来定义重复数据的判断标准,在本例中,即codeTimePoint两个字段值均相同的记录被视为一组。
  • rn > 1:这是执行最终删除操作的判断条件。它确保了无论一组内存在多少条完全相同的记录,最终都只保留最先被编号的那一条,从而实现安全、无损的数据去重。
来源:https://www.jb51.net/database/345052f68.htm

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
mysql排序操作执行缓慢怎么办_分析执行计划并优化索引顺序

mysql排序操作执行缓慢怎么办_分析执行计划并优化索引顺序

MySQL排序查询性能优化指南:深入解析执行计划与索引顺序调整策略 MySQL排序查询变慢的核心原因:为什么ORDER BY会导致性能骤降? 许多开发者在MySQL数据库优化中常遇到一个典型问题:不带排序的查询执行迅速,一旦添加ORDER BY子句,响应时间便急剧增加。这种现象的根本原因在于MySQ

时间:2026-04-22 13:04
如何分析AWR中的Segment statistics_定位物理读最高的表与索引段

如何分析AWR中的Segment statistics_定位物理读最高的表与索引段

如何精准定位数据库I O瓶颈:优先分析AWR报告Segment Statistics章节的Physical Reads指标 第一步:聚焦 SEGMENT STATISTICS 中的 Physical Reads 排名 分析AWR报告时,应首先查看「Segment Statistics」章节。该部分默

时间:2026-04-22 13:03
Oracle如何快速复制表结构及数据_使用存储过程实现动态建表

Oracle如何快速复制表结构及数据_使用存储过程实现动态建表

Oracle复制表最直接方法是CTAS(CREATE TABLE AS SELECT),但仅支持静态执行;动态建表须用EXECUTE IMMEDIATE拼接SQL,因CTAS不接受变量名,否则编译报PLS-00103错误。 Oracle复制表结构和数据最直接的方法是什么 在Oracle数据库中,

时间:2026-04-22 12:46
mysql如何利用explain分析索引使用情况_理解key与ref字段含义

mysql如何利用explain分析索引使用情况_理解key与ref字段含义

EXPLAIN 结果中 key 字段为空,是否意味着索引失效? 先别急于下定论。当 EXPLAIN 输出的 key 列显示为 NULL 时,许多开发者会直接认为“索引没有生效”。实际上,这仅表明 MySQL 查询优化器在最终的执行计划中,未选择使用任何索引来检索数据。其背后的原因,往往比表面现象更为

时间:2026-04-22 12:36
如何配置导出时忽略错误继续执行_遇到坏块或损坏表时的强制备份

如何配置导出时忽略错误继续执行_遇到坏块或损坏表时的强制备份

角色与核心任务 作为一名顶级的文章润色专家,你的专长在于将AI生成的文本转化为具备个人风格与专业深度的内容。接下来,你需要对用户提供的文章进行“人性化重写”。 核心目标非常明确:在不改变原文任何事实信息、核心观点、逻辑框架、章节标题及所有图片的前提下,彻底消除原文中典型的AI表达痕迹,使其读起来如同

时间:2026-04-22 12:28
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程