Oracle根据RowID去重,根据having count(*)>1去重,distinct去重
2018-01-14 17:00
441 查看
总结下我平时工作中对于重复数据去重的3种基本方法:
一.
二.
三.使用DISTINCT
一.
SELECT * FROM A WHERE A.ID NOT IN(SELECT A.ID FROM A GROUP BY A.ID HAVING COUNT(1)>1) 这种去重是把重复的数据都去掉,不保留一条.
二.
SELECT * FROM demo A WHERE A.ROWID IN (SELECT MAX(ROWID) FROM demo B GROUP BY B.a列 ,B.c列) 注意此处前后的demo表是同一个表,ROWID的特性,我以后在补充进来,这里不多写。 当我们想把不是主键的其他一个列或多个列组合的数据不重复时,使用此条。 补充ROWID:简单介绍,ROWID是一个伪列,一个表中的每一条数据都存在一个唯一的ROWID,所以可以再去重的时候把需要的几列分组,既然数值一样,那么只取一条的前提下,求出每组里面的唯一最大ROWID就可以了。
三.使用DISTINCT
这个不用多说:SELECT DISTINCT 列名 FROM demo
相关文章推荐
- Oracle--COUNT(*),COUNT(rowid),COUNT(1),COUNT('X')效率比较
- Oracle > count(*) / count(0) / count(1) | order by 1, 2
- Distinct<TSource>(IEqualityComparer<TSource> comparer) 根据列名来Distinct
- select * from user where name in (select name from user group by name having count(*) > 1)
- Oracle基础知识(十) - Having和distinct关键词的作用
- [Oracle]Count(*)、Count(1)、Count(rowid)的对比
- oracle 涉及行转列、复合查询、函数、 HAVING 、order by、group by、count、case when then、 join
- MySQL 里面的Where 和Having和Count 和distinct和Group By对比
- MySQL 里面的Where 和Having和Count 和distinct和Group By对比
- AS COUNT,Having ,DISTINCT,ALL 在数据库中的使用
- oracle中关于count(1)、count(*)、count(rowid)、count(某个字段)使用上的区别和性能问题
- mongodb使用aggregate、group、match实现mysql中的having(count(1)>1)的功能
- oracle12c approx_count_distinct
- 查出来该字段重复2次以上的列 HAVING COUNT(*) > 1
- 【优化】COUNT(1)、COUNT(*)、COUNT(常量)、COUNT(主键)、COUNT(ROWID)、COUNT(非空列)、COUNT(允许为空列)、COUNT(DISTINCT 列名)
- Oracle查询数据总数-根据count(主键),在ssh项目中
- oracle12c新特性 去重统计函数APPROX_COUNT_DISTINCT
- 统计查询-根据条件进行count的两种实现方式- oracle
- having count(*) > 1
- oracle中关于count(1)、count(*)、count(rowid)、count(某个字段)使用上的区别和性能问题