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;
相关推荐
躲在云朵里`20 分钟前
更新时对字段的重复校验
数据库·oracle
阿kun要赚马内22 分钟前
Qt写群聊项目(一):服务器
服务器·数据库·qt
康小庄23 分钟前
SpringBoot 拦截器 (Interceptor) 与切面 (AOP):示例、作用、及适用场景
java·数据库·spring boot·后端·mysql·spring·spring cloud
小六花s37 分钟前
SQL注入笔记
数据库·笔记·sql
yufuu9838 分钟前
Python在金融科技(FinTech)中的应用
jvm·数据库·python
OnYoung44 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
2301_8223776544 分钟前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
u0109272711 小时前
用Python和Twilio构建短信通知系统
jvm·数据库·python
闻哥1 小时前
从 SQL 执行到优化器内核:MySQL 性能调优核心知识点解析
java·jvm·数据库·spring boot·sql·mysql·面试
鹿角片ljp1 小时前
动态SQL实现模糊查询
数据库·sql·oracle