SQL Server删除表中的重复数据


Posted in SQL Server onMay 25, 2022

添加示例数据

create table Student(
        ID varchar(10) not null,
        Name varchar(10) not null,
);

insert into Student values('1', 'zhangs');
insert into Student values('2', 'zhangs');
insert into Student values('3', 'lisi');
insert into Student values('4', 'lisi');
insert into Student values('5', 'wangwu');

SQL Server删除表中的重复数据

删除Name重复多余的行,每个Name仅保留1行数据

1、查询表中Name 重复的数据

select Name from Student group by  Name having count(Name) > 1

SQL Server删除表中的重复数据

2、有唯一列,通过唯一列最大或最小方式删除重复记录

检查表中是否有主键或者唯一值的列,当前可以数据看到ID是唯一的,可以通过Name分组排除掉ID最大或最小的行

delete from Student
  where Name in( select Name from Student group by  Name having count(Name) > 1) and 
 ID not in(select  max(ID) from Student group by  Name having count(Name) > 1 )

执行删除脚本后查询

SQL Server删除表中的重复数据

3、无唯一列使用ROW_NUMBER()函数删除重复记录

如果表中没有唯一值的列,可以通过row_number 来删除重复数据 
重复执行插入脚本,查看表数据,表中没有唯一列值

SQL Server删除表中的重复数据

Delete T From
 (Select Row_Number() Over(Partition By [Name] order By [ID]) As RowNumber,* From Student)T
 Where T.RowNumber > 1

小知识点

语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
         表示根据COLUMN分组,在分组内部根据 COLUMN排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
         函数“Row_Number”必须有 OVER 子句。OVER 子句必须有包含 ORDER BY
         Row_Number() Over(Partition By [Name] order By [ID])  表示已name列分组,在每组内以ID列进行升序排序,每组内返回一个唯一的序号

执行删除脚本后查询表数据

SQL Server删除表中的重复数据

到此这篇关于SQL Server删除表中重复数据的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。


Tags in this post...

SQL Server 相关文章推荐
SqlServer 垂直分表(减少程序改动)
Apr 16 SQL Server
数据库之SQL技巧整理案例
Jul 07 SQL Server
SQL中的三种去重方法小结
Nov 01 SQL Server
使用SQL实现车流量的计算的示例代码
Feb 28 SQL Server
MySQL 中如何归档数据的实现方法
Mar 16 SQL Server
详解在SQLPlus中实现上下键翻查历史命令的功能
Mar 18 SQL Server
SQL Server数据库基本概念、组成、常用对象与约束
Mar 20 SQL Server
如何使用SQL Server语句创建表
Apr 12 SQL Server
SQL Server Agent 服务无法启动
Apr 20 SQL Server
SQL Server 中的事务介绍
May 20 SQL Server
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
May 25 #SQL Server
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
May 25 #SQL Server
SQL Server使用CROSS APPLY与OUTER APPLY实现连接查询
May 25 #SQL Server
SQL Server使用PIVOT与unPIVOT实现行列转换
May 25 #SQL Server
SQL SERVER中的流程控制语句
May 25 #SQL Server
SQL Server中搜索特定的对象
May 25 #SQL Server
SQL Server使用T-SQL语句批处理
May 20 #SQL Server
You might like
用PHP实现的生成静态HTML速度快类库
2007/03/31 PHP
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
js停止输出代码
2008/07/20 Javascript
Extjs中常用表单介绍与应用
2010/06/07 Javascript
简短几句 通俗解释javascript的闭包
2011/01/17 Javascript
JS图片无缝滚动(简单利于使用)
2013/06/17 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
javacript获取当前屏幕大小
2016/06/04 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
js获取ip和地区
2017/03/10 Javascript
vue如何获取点击事件源的方法
2017/08/10 Javascript
vue2中使用less简易教程
2018/03/27 Javascript
基于vue循环列表时点击跳转页面的方法
2018/08/31 Javascript
js实现鼠标拖拽缩放div实例代码
2019/03/25 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
JavaScript交换两个变量方法实例
2019/11/25 Javascript
在Django框架中设置语言偏好的教程
2015/07/27 Python
常用python编程模板汇总
2016/02/12 Python
bpython 功能强大的Python shell
2016/02/16 Python
python基于pyDes库实现des加密的方法
2017/04/29 Python
Python多线程扫描端口代码示例
2018/02/09 Python
python os用法总结
2018/06/08 Python
Python使用pickle模块储存对象操作示例
2018/08/15 Python
opencv-python的RGB与BGR互转方式
2020/06/02 Python
Python3.8安装Pygame教程步骤详解
2020/08/14 Python
Css3实现无缝滚动防抖
2020/09/14 HTML / CSS
师范学院教师自荐书
2014/01/31 职场文书
公司合作协议书范本
2014/04/18 职场文书
优秀团员事迹材料
2014/12/25 职场文书
小学生2015教师节演讲稿
2015/03/19 职场文书
简短的人生哲理(38句)
2019/08/13 职场文书
Golang 如何实现函数的任意类型传参
2021/04/29 Golang
Redis分布式锁Redlock的实现
2021/08/07 Redis