SQLServer 删除表中的重复数据

SQLServer 删除表中的重复数据,第1张

概述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 v

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‘);


删除name重复多余的行,每个name仅保留1行数据

1、查询表中name 重复的数据

select name from Student group by  name having count(name) > 1

 

2、有唯一列,通过唯一列最大或最小方式删除重复记录

检查表中是否有主键或者唯一值的列,当前可以数据看到ID是唯一的,可以通过name分组排除掉ID最大或最小的行

delete from Student where name in( 1) and ID not in(select max(ID) 1 )

执行删除脚本后查询


3、无唯一列使用ROW_NUMBER()函数删除重复记录

如果表中没有唯一值的列,可以通过 来删除重复数据
重复执行插入脚本,查看表数据,表中没有唯一列值

Delete T From (Select Row_Number() Over(Partition By [name] order ID]) As RowNumber,* 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列进行升序排序,每组内返回一个唯一的序号

执行删除脚本后查询表数据

总结

以上是内存溢出为你收集整理的SQLServer 删除表中的重复数据全部内容,希望文章能够帮你解决SQLServer 删除表中的重复数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1176543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存