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基本使用和简单的CRUD操作
Apr 05 SQL Server
SQL Server连接查询的实用教程
Apr 07 SQL Server
mybatis调用sqlserver存储过程返回结果集的方法
May 08 SQL Server
解决sql server 数据库,sa用户被锁定的问题
Jun 11 SQL Server
SQL Server代理:理解SQL代理错误日志处理方法
Jun 30 SQL Server
sql server偶发出现死锁的解决方法
Apr 10 SQL Server
SQL Server数据库查询出现阻塞之性能调优
Apr 10 SQL Server
Sql Server 行数据的某列值想作为字段列显示的方法
Apr 20 SQL Server
使用MybatisPlus打印sql语句
Apr 22 SQL Server
SQL SERVER中的流程控制语句
May 25 SQL Server
SQL Server携程核心系统无感迁移到MySQL实战
Jun 01 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
php中opendir函数用法实例
2014/11/15 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
PHP7多线程搭建教程
2017/04/21 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
用js一次改变多个input的readonly属性值的方法
2014/06/11 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
详解vue与后端数据交互(ajax):vue-resource
2017/03/16 Javascript
借助node实战JSONP跨域实例
2017/03/30 Javascript
jQuery使用unlock.js插件实现滑动解锁
2017/04/04 jQuery
JScript实现地址选择功能
2017/08/15 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
Angular如何在应用初始化时运行代码详解
2018/06/11 Javascript
Node.js 如何利用异步提升任务处理速度
2019/01/07 Javascript
JS对象和字符串之间互换操作实例分析
2019/02/02 Javascript
浅谈Layui的eleTree树式选择器使用方法
2019/09/25 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
[10:21]2018DOTA2国际邀请赛寻真——Winstrike
2018/08/11 DOTA
Python标准库之循环器(itertools)介绍
2014/11/25 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
python基于openpyxl生成excel文件
2020/12/23 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
中专自我鉴定范文
2013/10/16 职场文书
寄语学生的话
2014/04/10 职场文书
小学生运动会报道稿
2014/09/12 职场文书
小学音乐课教学反思
2016/02/18 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL