SQL DISTINCT去掉重复的数据统计方法

本文介绍了在SQL中使用DISTINCT关键字去除重复数据,以及通过GROUP BY和HAVING子句来统计重复数据的个数。同时,提供了删除重复数据的步骤,包括创建新表存储唯一数据,然后清空原表并重新插入。在Oracle数据库中,还可利用ROWID属性保留每个重复组的最新记录。

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

SQL DISTINCT重复的数据统计方法 group by 重复数据的个数统计 删除重复的数据2008-09-10 16:30DISTINCT 关键字可 SELECT 语句的结果中除去重复的行。如果没有指定 DISTINCT,那么将返回所有行,包括重复的行。 

<span style="font-size:14px;">select count(distinct t.destaddr) from nbyd_send t where t.input_time > to_date('2007-2-1','yyyy-mm-dd') and t.input_time < to_date('2007-3-1','yyyy-mm-dd')</span>

可以统计出一个月中的用户数量。

select distinct 字段名 from 表名  (去重)


关于如何快速得知里面每一个号码重复的个数问题的解答:利用分组函数的SQL语句
select t.tel,count(*) from nbyd_deliver t group by t.tel ;

group by 解决重复数据的个数统计适用于各种关系型数据库,如oracle,SQL Server

查询重复的数据
select * from (select v.xh,count(v.xh) num from sms.vehicle v group by v.xh) where num>1;

select v.xh,count(v.xh) num from sms.vehicle v group by v.xh having count(v.xh)=2;


删除重复的数据

create table mayong as (select distinct* from sms.vehicle);

delete from sms.vehicle ;

insert into sms.vehicle select * from mayong;


在oracle中,有个隐藏了自动rowid,里面给每条记录一个唯一的rowid,我们如果想保留最新的一条记录,我们就可以利用这个字段,保留重复数据中rowid最大的一条记录就可以了。

下面是查询重复数据的一个例子:

select a.rowid,a.* from 表名 a
where a.rowid != (select max(b.rowid) from 表名 b where a.字段1 = b.字段1 and a.字段2 = b.字段2 )



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值