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 相关文章推荐
2021-4-3课程——SQL Server查询【2】
Apr 05 SQL Server
2021-4-5课程——SQL Server查询【3】
Apr 05 SQL Server
SQL SERVER中常用日期函数的具体使用
Apr 08 SQL Server
SQLServer 日期函数大全(小结)
Apr 08 SQL Server
SQL 窗口函数实现高效分页查询的案例分析
May 21 SQL Server
SqlServer数据库远程连接案例教程
Jul 15 SQL Server
SQL语句中JOIN的用法场景分析
Jul 25 SQL Server
SQLServer中exists和except用法介绍
Dec 04 SQL Server
SQL Server实现分页方法介绍
Mar 16 SQL Server
SQLServer RANK() 排名函数的使用
Mar 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
十天学会php之第六天
2006/10/09 PHP
让PHP COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
2012/08/21 PHP
php获取操作系统语言代码
2013/11/04 PHP
解析PHP强制转换类型及远程管理插件的安全隐患
2014/06/30 PHP
PHP队列用法实例
2014/11/05 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
javascript得到XML某节点的子节点个数的脚本
2008/10/11 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
JavaScript中利用Array和Object实现Map的方法
2015/07/27 Javascript
Bootstrap开关(switch)控件学习笔记分享
2016/05/30 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
node.js基础知识小结
2018/02/26 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
Javascript实现秒表倒计时功能
2018/11/17 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
[47:35]VP vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/20 DOTA
Python中处理时间的几种方法小结
2015/04/09 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
Django数据库连接丢失问题的解决方法
2018/12/29 Python
django admin组件使用方法详解
2019/07/19 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
大学军训通讯稿
2014/01/13 职场文书
中班开学寄语
2014/04/04 职场文书
2013年最新自荐信范文
2014/06/23 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
适合毕业生创业的项目怎么找?
2019/08/08 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
Django项目如何正确配置日志(logging)
2021/04/29 Python
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
10大幻兽系恶魔果实 蝙蝠果实上榜,第一自愈能力强
2022/03/18 日漫
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技