SQLService删除重复的数据

文章介绍了在SQL中使用distinct和groupby进行数据去重的方法,以及如何保留或删除重复记录的SQL语句。distinct用于单列或多列去重,而groupby常与聚合函数结合使用。在删除重复数据时,提供了保留一条记录和删除全部重复记录的SQL查询示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、查询去重

1、使用distinct去重

distinct用来查询不重复记录的条数,用count(distinct id)来返回不重复字段的条数。用法注意:

distinct【查询字段】,必须放在要查询字段的开头,即放在第一个参数;

只能在SELECT 语句中使用,不能在 INSERT, DELETE, UPDATE 中使用;

DISTINCT 表示对后面的所有参数的拼接取不重复的记录,即查出的参数拼接每行记录都是唯一的

不能与all同时使用,默认情况下,查询时返回的就是所有的结果。

distinct支持单列、多列的去重方式。

作用于单列

单列去重的方式简明易懂,即相同值只保留1个。

select distinct name from A    //对A表的name去重然后显示

作用于多列

多列的去重则是根据指定的去重的列信息来进行,即只有所有指定的列信息都相同,才会被认为是重复的信息。

注意,distinct作用于多列的时候只在开头加上即可,并不用每个字段都加上。distinct必须在开头,在中间是不可以的,会报错,`select id,distinct name from A //错误

select distinct id,name from A   //对A表的id和name去重然后显示

配合count使用

select count(distinct name) from A  //对A表的不同的name进行计数

按顺序去重时,order by 的列必须出现在 distinct 中

2、使用group by

GROUP BY 语句根据一个或多个列对结果集进行分组。在分组的列上我们可以使用 COUNT, SUM, AVG,等函数,形式为:

select 重复的字段名 from 表名 group by 重复的字段名;

二、删除重复数据

1.保留一条(这个应该是大多数人所需要的 )

Delete 表名 Where ID Not In (Select Max(ID) From 表名 Group By 重复的字段)

2.删除全部重复记录(慎用)

Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值