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-5课程——SQL Server查询【3】
Apr 05 SQL Server
SQL Server中交叉联接的用法详解
Apr 22 SQL Server
在 SQL 语句中处理 NULL 值的方法
Jun 07 SQL Server
SQLServer之常用函数总结详解
Aug 30 SQL Server
MySQL 中如何归档数据的实现方法
Mar 16 SQL Server
SQL Server数据库基本概念、组成、常用对象与约束
Mar 20 SQL Server
SQL Server表分区降低运维和维护成本
Apr 08 SQL Server
如何使用SQL Server语句创建表
Apr 12 SQL Server
SQLServer权限之只开启创建表权限
Apr 12 SQL Server
SQL Server使用T-SQL语句批处理
May 20 SQL Server
SQL Server使用PIVOT与unPIVOT实现行列转换
May 25 SQL Server
SQL Server中T-SQL标识符介绍与无排序生成序号的方法
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传参之传值与传址的区别
2015/04/24 PHP
PHP嵌套输出缓冲代码实例
2015/05/12 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
thinkphp框架实现删除和批量删除
2016/06/29 PHP
PHP通过加锁实现并发情况下抢码功能
2016/08/10 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
通过遮罩层实现浮层DIV登录的js代码
2014/02/07 Javascript
关于onchange事件在IE和FF下的表现及解决方法
2014/03/08 Javascript
使用vue.js实现联动效果的示例代码
2017/01/10 Javascript
浅谈angular.js跨域post解决方案
2017/08/30 Javascript
Node.JS中快速扫描端口并发现局域网内的Web服务器地址(80)
2017/09/18 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
layui添加动态菜单与选项卡 AJAX请求的例子
2019/09/25 Javascript
layui实现显示数据表格、搜索和修改功能示例
2020/06/03 Javascript
JavaScript实现像雪花一样的Hexaflake分形
2020/07/07 Javascript
python中去空格函数的用法
2014/08/21 Python
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
Python 两个列表的差集、并集和交集实现代码
2016/09/21 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
Python、PyCharm安装及使用方法(Mac版)详解
2017/04/28 Python
Python空间数据处理之GDAL读写遥感图像
2019/08/01 Python
html5设计原理(推荐收藏)
2014/05/17 HTML / CSS
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
中学实习教师自我鉴定
2013/12/12 职场文书
授权委托书怎么写
2014/04/03 职场文书
《郑和远航》教学反思
2014/04/16 职场文书
体育系毕业生求职自荐信
2014/04/16 职场文书
大学竞选班干部演讲稿
2014/08/21 职场文书
学习三严三实心得体会
2014/10/13 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
记者节感言
2015/08/03 职场文书
爱护公物主题班会
2015/08/17 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python