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

转载于:https://www.cnblogs.com/longjshz/p/4326533.html

Oracle 表数据去重相关推荐

  1. oracle数据库开多线程,学习笔记:Oracle表数据导入 DBA常用单线程插入 多线程插入 sql loader三种表数据导入案例...

    天萃荷净 oracle之数据导入,汇总开发DBA在向表中导入大量数据的案例,如:单线程向数据库中插入数据,多线程向数据表中插入数据,使用sql loader数据表中导入数据案例 1.Oracle数据库 ...

  2. JDBC使用Java反射万能查询Oracle表数据、插入数据——【JDBC编程】

    JDBC使用反射智能查询Oracle表数据 JDBC编程中使用反射技术,动态获取Oracle表数据 1.反射的概念 2.构建Oracle数据库连接方法,关闭方法--便于调用 静态常量类: Oracle ...

  3. 清空oracle表数据 外键,oracle清空所有表数据

    方法: 1. 删除所有外键约束 2. drop表 3. 添加外键约束 代码使用powerdesign生成 /*============================================= ...

  4. oracle表数据如何恢复,ORACLE如何恢复被delete的表数据

    ORACLE如何恢复被delete的表数据 发布时间:2020-05-12 18:39:36 来源:亿速云 阅读:397 作者:Leah 这篇文章给大家分享的是ORACLE如何恢复被delete的表数 ...

  5. mysql,oracle表数据相互导入

    mysql导入oracle: 例如mysql中有ts_user_info表,现在要导入到oracle中的user_info表 1:导出mysql表数据到data.txt文件 mysql> sel ...

  6. oracle 表数据删除后恢复还原

    ##数据库表还原到某时间点 还原语句 使用如下sql语句就可以还原整张表格数据到某个时间点,前提条件:该表的表格式没有变动(如:字段的修改等) ALTER TABLE 表名 ENABLE ROW MO ...

  7. Oracle表数据被锁定及查看解决

    oracle操作时,总会发现偶尔有表中数据被锁定了;导致后面的modify操作无法进行. 解决方式: 1,查看被锁的数据库表及被锁信息: select b.owner TABLEOWNER,b.obj ...

  8. oracle表数据实例,Oracle创建数据表实例

    Oracle创建数据表实例. 1.创建数据表 --判断数据表是否存在,存在则删除 DECLARE IS_EXIST NUMBER; BEGIN SELECT COUNT(*) INTO IS_EXIS ...

  9. oracle表数据导出成unl文件,oracle的文本导入、导出技巧

    [IT168 服务器学院]在使用oracle时,总觉得oracle的导入,导出没有informix的load,unload好用,没办法,只能参照网上朋友的思路和informix的实现,写了几个脚本,希 ...

最新文章

  1. iOS---Objective-C: +load vs +initialize
  2. 【深度学习】我用 PyTorch 复现了 LeNet-5 神经网络(MNIST 手写数据集篇)!
  3. kafka管理神器-kafkamanager
  4. 事务传播特性和隔离级别
  5. Statement和PreparedStatement之间的区别(转)
  6. Ralink5350开发环境搭建
  7. C++/C中的小知识备忘
  8. 数组的最长递减子序列java_求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}...
  9. java_Swing桌面程序开发
  10. 文本数据增强(data augmentation)nlpaug使用
  11. linux安装gcc等程序包,Linux手动安装gcc-8.3.0
  12. centos7修复libcrypto.so.10缺失的问题,导致ssh无法运行
  13. 搭建Snipeit资产管理系统
  14. C++-计算体质指数BMI值 信息学奥赛
  15. Python 学习入门(26)—— 装饰器
  16. Oracle 快速入门 PL/SQL游标
  17. 百度地图JavaScript API 学习之地址解析
  18. Xmind 8 pro 软件破解版(经济条件允许的情况下,请支持正版)
  19. 名悦集团:新手买新车有些注意事项
  20. 根据关键字位置为PDF添加文本和图片

热门文章

  1. STEAM 97%好评,体验堪比《杀戮尖塔》,为什么玩家说这是2020年上半年最超值的游戏?
  2. 魔方游戏实现:任意阶魔方的表示
  3. 暗黑破坏神不朽:诅咒宝箱不能开?玩家果断打开后,赚到了
  4. Set精讲(Java)·算法常用集合处理方法
  5. AJAX应用和传统Web应用有什么不同
  6. dbms_metadata遇到ORA-31603的解决方案
  7. 查询计划中集的势(Cardinality)的计算
  8. Grafana+Prometheus系统监控之MySql
  9. Javascript知识——事件
  10. 蓝桥杯练习(java):字符串对比