首页 > 数据库 >sqlserverCTE删除重复数据的实现方法

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

来源:互联网 2026-04-14 12:48:31

SQL Server使用CTE删除重复数据并保留一条记录 如何实现重复数据删除与保留 处理数据表中的重复记录,其核心思路在于精准识别重复项并选择性保留。具体操作可分为三个步骤: 首先,使用ROW_NUMBER()窗口函数为数据行编号。该函数的关键在于按指定列(例如设备编号和发送日期)进行分组排序。

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删除完全重复的数据并保留一条

应用场景说明

在实际数据库运维中,可能遇到一种特殊情况:即使表结构设有主键,表中仍可能存在所有字段值完全相同的重复记录。此时若直接按主键删除,可能导致意外删除全部重复数据,需要采用更稳妥的方法。

长期稳定更新的攒劲资源: >>>点此立即查看<<<

完全重复数据的删除实现

针对此类完全重复的数据,上述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:执行删除的判断条件,确保每组完全重复的数据中仅保留第一条记录,实现安全去重。

侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述

热游推荐

更多
湘ICP备14008430号-1 湘公网安备 43070302000280号
All Rights Reserved
本站为非盈利网站,不接受任何广告。本站所有软件,都由网友
上传,如有侵犯你的版权,请发邮件给xiayx666@163.com
抵制不良色情、反动、暴力游戏。注意自我保护,谨防受骗上当。
适度游戏益脑,沉迷游戏伤身。合理安排时间,享受健康生活。