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);

最新文章

  1. NYOJ 1007
  2. GET command找不到
  3. 疑似easyui本身bug:easyui时间控件问题,试了几个版本都不行
  4. Bridge.NET
  5. bug:无法给图片加边框
  6. PHPMyAdmin 显示缺mysqli 扩展的解决方法
  7. Test Tex
  8. Python多线程(1)——介绍
  9. C#中实现WebBrowser控件的HTML源代码读写
  10. Spring_Aop的xml和注解的使用
  11. 前端之bootstrap模态框
  12. Javascript、CSS、HTML面试题
  13. hdu:2036.改革春风吹满地
  14. 朱晔的互联网架构实践心得S1E1:Pilot
  15. LNMP平台部署
  16. dos语法
  17. File类总结
  18. Hadoop学习笔记之三:DataNode
  19. [Linux]Linux下Apache服务器配置
  20. chown 详解

热门文章

  1. Tomcat原理 分类: 原理 2015-06-28 19:26 5人阅读 评论(0) 收藏
  2. 注意:C++中double的表示是有误差的
  3. Android动画效果translate、scale、alpha、rotate
  4. hdu 4825 Xor Sum (建树) 2014年百度之星程序设计大赛 - 资格赛 1003
  5. HDU 2594 (简单KMP) Simpsons’ Hidden Talents
  6. Java知识点:javac命令
  7. noip2005提高组题解
  8. (转)c & c++内存分配
  9. Ant编译和部署java web项目
  10. 【转】让apache支持中文路径或者中文文件