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 语句中处理 NULL 值的方法
Jun 07 SQL Server
sql字段解析器的实现示例
Jun 23 SQL Server
SQLServer中JSON文档型数据的查询问题解决
Jun 27 SQL Server
SQLServer之常用函数总结详解
Aug 30 SQL Server
万能密码的SQL注入漏洞其PHP环境搭建及防御手段
Sep 04 SQL Server
通过T-SQL语句创建游标与实现数据库加解密功能
Mar 16 SQL Server
SQL Server数据库查询出现阻塞之性能调优
Apr 10 SQL Server
SQL Server Agent 服务无法启动
Apr 20 SQL Server
SQL Server 中的事务介绍
May 20 SQL Server
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
May 25 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图像处理类代码分享
2012/01/19 PHP
php中将汉字转换成拼音的函数代码
2012/09/08 PHP
PHP函数import_request_variables()用法分析
2016/04/02 PHP
PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】
2019/09/10 PHP
form中限制文本字节数js代码
2007/06/10 Javascript
Javascript 面向对象编程(一) 封装
2011/08/28 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
javascript+canvas实现刮刮卡抽奖效果
2015/07/29 Javascript
LayerClose弹窗关闭刷新方法
2018/08/17 Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
2019/01/08 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
Python生成不重复随机值的方法
2015/05/11 Python
python scatter散点图用循环分类法加图例
2019/03/19 Python
windows系统中Python多版本与jupyter notebook使用虚拟环境的过程
2019/05/15 Python
java判断三位数的实例讲解
2019/06/10 Python
python中字符串数组逆序排列方法总结
2019/06/23 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
Python计算信息熵实例
2020/06/18 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
html5+css3实现一款注册表单实例
2013/04/17 HTML / CSS
HTML5 画布canvas使用方法
2016/03/18 HTML / CSS
使用HTML5 Geolocation实现一个距离追踪器
2018/04/09 HTML / CSS
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
Java里面有没有全局变量?为什么?
2015/02/06 面试题
应届生会计电算化求职信
2013/10/03 职场文书
就业推荐表自我鉴定
2013/10/29 职场文书
经贸日语专业个人求职信范文
2013/12/28 职场文书
在职证明书范本(2014新版)
2014/09/25 职场文书
安全承诺书格式范本
2015/04/28 职场文书
学校百日安全活动总结
2015/05/07 职场文书
创业计划书之烤红薯
2019/09/26 职场文书