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 相关文章推荐
【HBU】数据库第四周 单表查询
Apr 05 SQL Server
SQLServer 日期函数大全(小结)
Apr 08 SQL Server
sqlserver2017共享功能目录路径不可改的解决方法
Apr 16 SQL Server
SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7\Administrator 的信息
Jun 30 SQL Server
Windows环境下实现批量执行Sql文件
Oct 05 SQL Server
SQLServer中exists和except用法介绍
Dec 04 SQL Server
使用SQL实现车流量的计算的示例代码
Feb 28 SQL Server
SQL Server实现分页方法介绍
Mar 16 SQL Server
MSSQL基本语法操作
Apr 11 SQL Server
Sql Server 行数据的某列值想作为字段列显示的方法
Apr 20 SQL Server
SQL Server删除表中的重复数据
May 25 SQL Server
SQL bool盲注和时间盲注详解
Jul 23 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
PHP5 面向对象(学习记录)
2009/12/02 PHP
PHP 二维关联数组根据其中一个字段排序(推荐)
2017/04/04 PHP
Javascript 跨域访问解决方案
2009/02/14 Javascript
IE中jquery.form中ajax提交没反应解决方法分享
2012/09/11 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
2013/04/26 Javascript
[JSF]使用DataModel处理表行事件的实例代码
2013/08/05 Javascript
15条JavaScript最佳实践小结
2013/08/09 Javascript
AngularJS基础 ng-paste 指令简单示例
2016/08/02 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
js Canvas实现的日历时钟案例分享
2016/12/25 Javascript
ES6中Math对象新增的方法实例详解
2017/04/25 Javascript
微信小程序新增的拖动组件movable-view使用教程
2017/05/20 Javascript
用JS实现简单的登录验证功能
2017/07/28 Javascript
DVA框架统一处理所有页面的loading状态
2017/08/25 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
微信小程序实现的一键拨号功能示例
2019/04/24 Javascript
解决vue加scoped后就无法修改vant的UI组件的样式问题
2020/09/07 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
Python实现新浪博客备份的方法
2016/04/27 Python
Python中函数参数设置及使用的学习笔记
2016/05/03 Python
Python实现获取磁盘剩余空间的2种方法
2017/06/07 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
python自动化unittest yaml使用过程解析
2020/02/03 Python
经理助理岗位职责
2014/03/05 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
2015年施工员工作总结范文
2015/04/20 职场文书
慈善献爱心倡议书
2015/04/27 职场文书
少先队中队工作总结2015
2015/07/23 职场文书
采购部年度工作总结
2015/08/13 职场文书
教师纪律作风整顿心得体会
2016/01/23 职场文书
《世界多美呀》教学反思
2016/02/22 职场文书
最新最全的手机号验证正则表达式
2022/02/24 Javascript
Python之Matplotlib绘制热力图和面积图
2022/04/13 Python