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;
相关推荐
我爱松子鱼1 分钟前
mysql之规则优化器RBO
数据库·mysql
chengooooooo26 分钟前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser1 小时前
【SQL】多表查询案例
数据库·sql
Galeoto1 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)2 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231112 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白2 小时前
PostgreSQL:更新字段慢
数据库·postgresql
敲敲敲-敲代码2 小时前
【SQL实验】触发器
数据库·笔记·sql
和道一文字yyds2 小时前
MySQL 中的索引数量是否越多越好?为什么?如何使用 MySQL 的 EXPLAIN 语句进行查询分析?MySQL 中如何进行 SQL 调优?
数据库·sql·mysql
落笔画忧愁e3 小时前
FastGPT快速将消息发送至飞书
服务器·数据库·飞书