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 相关文章推荐
SQL Server连接查询的实用教程
Apr 07 SQL Server
SQL Server2019数据库之简单子查询的具有方法
Apr 27 SQL Server
如何有效防止sql注入的方法
May 25 SQL Server
Windows环境下实现批量执行Sql文件
Oct 05 SQL Server
Spark SQL 2.4.8 操作 Dataframe的两种方式
Oct 16 SQL Server
SQL Server表分区降低运维和维护成本
Apr 08 SQL Server
SQL Server中的游标介绍
May 20 SQL Server
SQL Server使用T-SQL语句批处理
May 20 SQL Server
SQL SERVER中的流程控制语句
May 25 SQL Server
SQL Server数据库备份和恢复数据库的全过程
Jun 14 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实现模拟post请求用法实例
2015/07/11 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
orm获取关联表里的属性值
2016/04/17 PHP
javascript实现的listview效果
2007/04/28 Javascript
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
2014/04/03 Javascript
非常实用的12个jquery代码片段
2015/11/02 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
Nodejs下使用gm圆形裁剪并合成图片的示例
2018/02/22 NodeJs
在 Angular6 中使用 HTTP 请求服务端数据的步骤详解
2018/08/06 Javascript
taro开发微信小程序的实践
2019/05/21 Javascript
JavaScript实现捕获鼠标坐标
2020/04/12 Javascript
Windows下python2.7.8安装图文教程
2016/05/26 Python
Python简单删除列表中相同元素的方法示例
2017/06/12 Python
深入了解Django View(视图系统)
2019/07/23 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
python-视频分帧&多帧合成视频实例
2019/12/10 Python
Python range与enumerate函数区别解析
2020/02/28 Python
Python正则表达式高级使用方法汇总
2020/06/18 Python
Python基于traceback模块获取异常信息
2020/07/23 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
英国领先的游戏零售商:GAME
2019/09/24 全球购物
商场消防演习方案
2014/02/12 职场文书
求职信范文大全
2014/05/26 职场文书
伦敦奥运会的口号
2014/06/21 职场文书
就业协议书
2014/09/12 职场文书
学生喝酒检讨书500字
2014/11/02 职场文书
2015年环卫工作总结
2015/04/28 职场文书
2015年小学语文教学工作总结
2015/05/25 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
Pandas自定义选项option设置
2021/07/25 Python
python_tkinter事件类型详情
2022/03/20 Python
Oracle中DBLink的详细介绍
2022/04/29 Oracle