加入收藏 | 设为首页 | 会员中心 | 我要投稿 草根网 (https://www.0555zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

SQL中如何删除重复数据,只保留其中一行

发布时间:2022-12-15 10:54:55 所属栏目:教程 来源:
导读:  需求分析

  数据库中存在重复记录,删除保留其中一条(是否重复判断基准为多个字段)

  解决方案

  碰到这样的问题我们先分解步骤来看

  创建测试数据

  我们创建一个人员信息表并
  需求分析
 
  数据库中存在重复记录,删除保留其中一条(是否重复判断基准为多个字段)
 
  解决方案
 
  碰到这样的问题我们先分解步骤来看
 
  创建测试数据
 
  我们创建一个人员信息表并在里面插入一些重复的数据。
 
  CREATE TABLE [dbo].[Person](
 
  [ID] [INT] IDENTITY(1,1) NOT NULL,
 
  [Name] [VARCHAR](20) NULL,
 
  [Age] [INT] NULL,
 
  [Address] [VARCHAR](20) NULL,
 
  [Sex] [CHAR](2) NULL
 
  );
 
  SET IDENTITY_INSERT [dbo].[Person] ON;
 
  INSERT INTO [dbo].[Person] (ID,Name,Age,Address,Sex)
 
  VALUES
 
  ( 1, '张三', 18, '北京路18号', '男' ),
 
  ( 2, '李四', 19, '北京路29号', '男' ),
 
  ( 3, '王五', 19, '南京路11号', '女' ),
 
  ( 4, '张三', 18, '北京路18号', '男' ),
 
  ( 5, '李四', 19, '北京路29号', '男' ),
 
  ( 6, '张三', 18, '北京路18号', '男' ),
 
  ( 7, '王五', 19, '南京路11号', '女' ),
 
  ( 8, '马六', 18, '南京路19号', '女' );
 
  SET IDENTITY_INSERT [dbo].[Person] OFF;
 
  建立好测试数据如下:
 
  回收站删除的数据怎么恢复_如何删除数据_excel删除重复数据
 
  我们发现除了自增长ID不同以为,有几条其他字段都重复的数据出现,符合我们的需求。
 
  找出重复的数据
 
  SELECTMAX(ID)ID ,
 
  Name,Age,Address,Sex
 
  FROMdbo.Person
 
  GROUPBYName,Age,Address,Sex
 
  HAVINGCOUNT(1)>1
 
  HAVING将分组后统计出来的数量大于1的数据行,就是我们要找的重复数据:
 
  回收站删除的数据怎么恢复_excel删除重复数据_如何删除数据
 
  上面用Max函数或者Min函数均可如何删除数据,只是为了保证取出来的数据的唯一性。
 
  删除重复的数据
 
  其实我们数据库中最后要保留的结果就是第二步中查询出来的数据,我们把其他的数据删除即可。怎么删除呢?我们使用ID来排除。
 
  DELETE FROM Person
 
  WHERE EXISTS
 
  (
 
  SELECT * FROM (
 
  SELECT
 
  MAX(ID) ID,
 
  Name,Age,Address,Sex
 
  FROM dbo.Person
 
  GROUP BY Name,Age,Address,Sex
 
  HAVING COUNT(1)>1) T
 
  WHERE Person.Name=T.Name
 
  AND Person.Age=T.Age
 
  AND Person.Address=T.Address
 
  AND Person.Sex=T.Sex
 
  AND Person.ID
 
  )
 
  执行完后重新查询Person表结果如下:
 
  excel删除重复数据_如何删除数据_回收站删除的数据怎么恢复
 
  马六因为只有一条记录,所以没有参与去重,直接显示。
 

(编辑:草根网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!