Oracle 表数据去重 |
您所在的位置:网站首页 › oracle中的去重 › Oracle 表数据去重 |
Oracle数据库中重复数据怎么去除?使用数据表的时候经常会出现重复的数据,那么要怎么删除呢?下面我们就来说一说去除Oracle数据库重复数据的问题。今天我们要说的有两种方法。 一.根据rowid来去重。 我们都知道在oracle数据库表中,每条记录都有唯一的rowid来标识,这就可以做我们去重的查询条件 我们现有一张TEST表,,首先若我们要按ID,VALUE进行去重的话, DELETE TEST A WHERE NOT EXISTS (SELECT 1 FROM (SELECT ID, VALUE, MAX(ROWID) MAXROWID FROM TEST GROUP BY ID, VALUE) T WHERE A.ROWID = T.MAXROWID); 同样的,要是只根据ID去重的话, DELETE TEST A WHERE NOT EXISTS (SELECT 1 FROM (SELECT ID, MAX(ROWID) MAXROWID FROM TEST GROUP BY ID) T WHERE A.ROWID = T.MAXROWID); 二.采用ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)开窗函数进行去重 这是一个开窗函数,ROW_NUMBER() 从1开始,为每一条分组记录返回一个数字。 如果我们想根据ID来去重,相同ID的取value值最小的那个,根据ROW_NUMBER()我们可以得到, 此时,我们根据ROW_NUMBER()生产的标识来取对应的值就可以了 DELETE FROM AAAA T1 WHERE ROWID NOT IN (SELECT RID FROM (SELECT T1,*,ROWID AS RID, ROW_NUMBER() OVER(PARTITION BY T1.ID ORDER BY T1.VALUE) AS RN FROM AAAA T1) WHERE RN = 1); |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |