您的位置:首页 > 数据库 > Oracle

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

2018-01-14 17:00 441 查看
总结下我平时工作中对于重复数据去重的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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: