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

  • 相关阅读:
    If you want the rainbow, you have to deal with the rain.
    Yesterday is history, tomorrow is a mystery, but today is a gift.
    .bashrc修改环境变量文件后ls之类的不能用了
    Flask项目中使用mysql数据库启动项目是发出警告
    flask 编码问题
    flask 密钥问题
    Flask 数据库连接
    查看cpu核的相关信息
    top命令常用
    gluster设置日志级别
  • 原文地址:https://www.cnblogs.com/longjshz/p/4326533.html
Copyright © 2020-2023  润新知