SQL Server删除重复数据只保留一条

介绍

最近在导入数据库数据, 有时候给的数据源文件,存在重复数据, 需要清除但是还需要保留一条记录的需求.

本文将介绍如何使用SQL Server来实现这个需求。

流程

下面是实现删除重复数据的流程,我们可以用表格展示每个步骤:

步骤 描述

步骤一 先看看有哪些重复的数据

步骤二 根据条件删除重复数据

SQL实现

步骤一:先看看有哪些重复的数据(根据条件分组)

首先,我们需要查询出所有重复数据,以便后续删除操作。以下是查询重复数据的代码:

sql 复制代码
SELECT col1, col2,  COUNT(*) AS count
FROM table_name
GROUP BY col1, col2
HAVING COUNT(*) > 1;

这段代码将会返回具有重复值的记录,并且还会显示重复次数。需要根据实际情况将 table_name 替换为你所使用的表名,col1, col2 替换为需要判断重复的列。

步骤二:根据条件删除重复数据

在查询出所有重复数据后,我们可以根据条件删除这些重复数据,只保留一条。以下是删除重复数据的代码:

sql 复制代码
WITH cte AS (
    SELECT col1, col2 ROW_NUMBER() OVER(PARTITION BY col1, col2  ORDER BY (SELECT 0)) AS rn
    FROM talbe_name
)
DELETE FROM cte
WHERE rn > 1;

这段代码使用了 ROW_NUMBER() 函数和一个公共表表达式(Common Table Expression,CTE)来为每条记录分配一个行号,并按照指定的列进行分组。最后,我们删除行号大于1的记录,即保留第一条记录,删除重复数据。

需要注意的是,同样需要根据实际情况将 table_name 替换为你所使用的表名,col1, col2 替换为需要判断重复的列。

相关推荐
正在走向自律12 分钟前
AI数据分析与可视化:从基础到应用实践
服务器·人工智能·python·机器学习·数据分析·pandas
OnlineProxy31 分钟前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
归秋1421 小时前
2026 企业 AI 办公工具选型指南:从评估框架到产品适配
大数据·运维·人工智能
Android系统攻城狮1 小时前
Linux Gstreamer深度解析之gst_audio_encoder_set_frame_max调用流程与实战(六十一)
android·linux·运维·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶
91刘仁德2 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
辻弋2012 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
硅基手札3 小时前
【Linux内核专栏 14】网络协议栈
linux·运维·网络协议
可乐鸡翅yeah_3 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
石头麻辣鱼3 小时前
Bamboo 调度系统 OceanBase 适配实战:存储过程迁移踩过的三个大坑
数据库
龙亘川4 小时前
数智驱动民政升级 精准守护民生保障
大数据·数据库·人工智能