Oracle根据多列去重

本文介绍了在Oracle数据库中如何根据多列进行数据去重。使用`DISTINCT`关键字可以去除单列或多列的重复值,但无法同时获取其他信息。这时可以结合`GROUP BY`与聚合函数一起使用,如`COUNT()`,实现特定字段去重的同时保留其他字段信息。文中还提到了ROWID的概念,ROWID是一个伪列,表示数据行的物理地址,对于快速定位数据非常有用。在去重场景下,可以通过比较ROWID来过滤重复记录。
摘要由CSDN通过智能技术生成

(1)distinct

关键词 distinct用于返回唯一不同的值,可作用于单列和多列

但必须将其放在开头,否则会提示错误
在这里插入图片描述
而若在其后添加多个变量名,则返回的将是这多个变量名不同时重复的列,因而使用distinct筛选某字段不重复记录时无法同时得到其他的信息。

此时可以采用group by函数

(2)group by

与聚合函数联用可以在取多个字段的同时去重其中一个字段

例如要显示的字段为A、B、C三个,而A字段的内容不能重复,可以如下语句:

select A, max(B), max(C), count(*) 重复次数 from [table] 
where [条件] group by A having count(*) >= (int n);

如果在上句中having加 count()>1,就可以查出记录A所有有重复的记录;

count()>=1 就可以查出所有的记录,但重复的只显示一条,并且后面有显示重复的次数。

推荐使用:

SELECT * FROM t1  WHERE ROWID IN (SELECT MAX(ROWID) FROM t1 GROUP BY id, name;

上式可以对拥有相同id和name的数据进行去重。

ROWID是ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值