SQL server 删除重复行

删除表中的重复记录需要谨慎操作,因为如果不正确地处理主键或唯一标识符,可能会导致数据丢失。通常,我们首先需要确定哪些列是用于判断记录是否重复的标准,然后根据这些标准来删除多余的记录。

以下是一个通用的SQL示例,用于删除基于特定列(假设为column1, column2, ..., columnN)的重复行,同时保留每组重复行中的一行(通常基于某种逻辑,如最早的记录或最大的ID)。

使用CTE和ROW_NUMBER()

假设我们有一个表my_table,我们想要基于column1column2来删除重复行,我们可以使用公用表表达式(CTE)和ROW_NUMBER()窗口函数来实现:

sql 复制代码
WITH CTE AS (  
    SELECT  
        *,  
        ROW_NUMBER() OVER(PARTITION BY column1, column2 ORDER BY id) AS rn  -- 假设id是表中用于确定顺序的列  
    FROM  
        my_table  
)  
DELETE FROM CTE  
WHERE rn > 1;
相关推荐
暴躁小师兄数据学院8 小时前
【AI大数据工程师特训笔记】第05讲:关联查询
数据库·sql·oracle
倔强的石头_8 小时前
《Kingbase护城河》——跨平台环境下的数据库联调实战
数据库
lzhdim8 小时前
SQL 入门 17:MySQL 数据类型:从字符串到 JSON 的全面解析
数据库·sql·mysql·json
杨云龙UP8 小时前
Oracle RAC / ODA 生产环境指定 PDB 启动 SOP
linux·运维·数据库·oracle
kingwebo'sZone9 小时前
在Cent上安装Mysql 8.0的遇到的问题和解决办法
数据库·mysql·adb
幽络源小助理9 小时前
最新知识付费系统网站源码 PC+H5双端 附安装教程 – 幽络源源码网
大数据·数据库
小白考证进阶中9 小时前
Oracle OCP证书报考&考试全指南
数据库·oracle·oracle ocp·ocp认证·oracle认证·甲骨文认证·oracle ocp题库
Leon-Ning Liu10 小时前
【真实经验分享】 ORA-600 [qesmaGetTblSeg1]
数据库·oracle
与数据交流的路上10 小时前
MySQL 优化 -- 相关
数据库·mysql
Rooting++10 小时前
为什么mysql的表字段的collation会自动变
数据库·mysql