SQL Server删除表中的重复数据

 更新时间:2022年05月24日 11:04:31   作者:springsnow  
这篇文章介绍了SQL Server删除表中重复数据的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

添加示例数据

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( 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 )

执行删除脚本后查询

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

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

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删除表中重复数据的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SQLSERVER 清除历史记录的方法

    SQLSERVER 清除历史记录的方法

    使用SQL Server登录使用数据库时,登录过的记录会出现在登录框中,下面是删除方法,需要的朋友可以参考下
    2014-08-08
  • SQLSERVER 拼接含有变量字符串案例详解

    SQLSERVER 拼接含有变量字符串案例详解

    这篇文章主要介绍了SQLSERVER 拼接含有变量字符串案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • SQL 在自增列插入指定数据的操作方法

    SQL 在自增列插入指定数据的操作方法

    这篇文章主要介绍了SQL 在自增列插入指定数据的操作方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • SQL server数据库创建代码 filegroup文件组修改的示例代码

    SQL server数据库创建代码 filegroup文件组修改的示例代码

    这篇文章主要介绍了SQL server数据库创建代码 filegroup文件组修改的实现方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 根据多条件查询临时表 想得到不同结果集的方法

    根据多条件查询临时表 想得到不同结果集的方法

    很多情况下,需要采用多个参数来查询一张临时表,每个参数都要求得到不同的临时表结果集。而往往某些参数并不对应这张临时表中的字段,而是对应与该临时表ID关联的另一张表的字段。
    2009-11-11
  • SQL cursor用法实例

    SQL cursor用法实例

    这篇文章介绍了SQL cursor用法实例,有需要的朋友可以参考一下
    2013-09-09
  • SQL语句的各个关键字的解析过程详细总结

    SQL语句的各个关键字的解析过程详细总结

    由于最近需要做一些sql query性能提升的研究,因此研究了一下sql语句的解析过程;本文是我在看了各种资料后手机总结的,会详细的,一步一步的讲述一个sql语句的各个关键字的解析过程,欢迎大家互相学习
    2013-01-01
  • SQL Server数据库简单的事务日志备份恢复流程

    SQL Server数据库简单的事务日志备份恢复流程

    在一些对数据可靠性要求很高的行业,若发生意外停机或数据丢失,其损失是十分惨重的,数据库管理员应针对具体的业务要求指定详细的数据库备份与灾难恢复策略,本文给大家详细介绍了SQL Server数据库简单的事务日志备份恢复流程,需要的朋友可以参考下
    2024-09-09
  • 使用SQL SERVER存储过程实现历史数据迁移方式

    使用SQL SERVER存储过程实现历史数据迁移方式

    这篇文章主要介绍了使用SQL SERVER存储过程实现历史数据迁移,介绍了历史数据迁移的基本概念及目的,对SQL SERVER存储过程历史数据迁移知识感兴趣的朋友参考下吧
    2021-09-09
  • navicat导入sql数据库文件的简单实现

    navicat导入sql数据库文件的简单实现

    在很多项目当中都有sql文件导入到MySQL数据库的需要,因为有sql数据库文件,这个项目才能正常运行起来,本文主要介绍了navicat导入sql数据库文件的简单实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11

最新评论