zoukankan      html  css  js  c++  java
  • 查询表中重复数据

    "重复记录"有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

    下面介绍第二种情况

    查询是否存在重复数据

    select id,count(id) from A group by id having count(id)>1

    背景:oracle  表中数据有相同的id(这不是主键),但是数据是不同时间建的,想删除重复id的数据又保留最近创建的

    1.查询出所有不想要的数据

    select temB.*
      from (select t.*,
                   t.rowid as rid,
                   row_number() over(partition by id order by create_date desc) rank
              from A) temB
     where rank > 1

    2.delete from A where A.rowid in (上面的查询结果)

    ROWID是ORACLE中的一个重要的概念。用于定位数据库中一条记录的一个相对唯一地址值。通常情况下,该值在该行数据插入到数据库表时即被确定且唯一。ROWID它是一个伪列,它并不实际存在于表中。它是ORACLE在读取表中数据行时,根据每一行数据的物理地址信息编码而成的一个伪列。所以根据一行数据的ROWID能找到一行数据的物理地址信息。从而快速地定位到数据行。数据库的大多数操作都是通过ROWID来完成的,而且使用ROWID来进行单记录定位速度是最快的。

    要理解索引,必须先搞清楚ROWID。

  • 相关阅读:
    ZXing 生成、解析二维码图片的小示例
    OpenLDAP 2.4.x源码安装配置
    Elasticsearch & Kibana with Shield
    Kibana SSL
    Kibana 官方示例
    ELK 处理分析日志(nginx,syslog)
    Elasticsearch 负载均衡集群
    Elasticsearch REST API小记
    ELK 安装配置
    ELK 安装配置
  • 原文地址:https://www.cnblogs.com/leavesss/p/10630403.html
Copyright © 2011-2022 走看看