• 查询表中重复数据


    "重复记录"有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如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。

  • 相关阅读:
    windows mobile licence
    通过acme.sh生成泛域名证书
    枚举值为何为1、2、4、8、16....
    script 解决 跨域访问
    强大的json字符串对象,转化为object对象
    使用maven jetty调试web程序
    web上实现起点到终点的抛物线轨迹运动——补充
    实现2个有序数组的排序
    maven axis2简单部署webservice
    使用javamail发送邮件
  • 原文地址:https://www.cnblogs.com/leavesss/p/10630403.html
Copyright © 2020-2023  润新知