Oracle根据RowID去重,根据having count(*)>1去重,distinct去重

总结下我平时工作中对于重复数据去重的3种基本方法:
一.

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)