zoukankan      html  css  js  c++  java
  • oracle中rownum和rowid的区别【转】

    rownum和rowid的区别总括:

    rownum和rowid都是伪列,但是两者的根本是不同的。

    rownum是根据sql查询出的结果给每行分配一个逻辑编号,所以你的sql不同也就会导致最终rownum不同,

    直接用rownum查找的范围必须要包含1;因为rownum是从1开始记录的,当然你可以把rownum查出来后放在一个虚表中作为这个虚表的字段再根据条件查询

    但是rowid是物理结构上的,在每条记录insert到数据库中时,都会有一个唯一的物理记录 。

     

    • rownum分页:

        使用rownum对oracle分页

    • rowid去重,主键仍唯一,仅去掉名字和年纪一样的重复学生:
    SELECT a.rowid,a.* FROM student a 
           WHERE a.rowid NOT IN 
                 (SELECT MAX(b.rowid) FROM student b WHERE a.sname = b.sname AND a.sage = b.sage);
    

    上面这条sql语句因为 源和目标 交叉着一起查询,理解会有困难.

    中文释意(从内层select开始理解): 

    1.从studnetA表中开始查找和studentB表中同样名字和同样年纪的学生.

    2.把这些同样名字的学生的最大rowid找出来.

    3.从studentA表中查找不在最大rowid范围内的那些学生.

    真正使用的去重语句为:

    DELETE FROM student a 
           WHERE a.rowid NOT IN 
                 (SELECT MAX(b.rowid) FROM student b WHERE a.sname = b.sname AND a.sage = b.sage);
    

      rowid的更详细参考资料: 

      高效删除Oracle数据库中重复数据的方法

      oracle中rownum和rowid的区别

  • 相关阅读:
    jQ插件开发规范(转)
    一个圆环形状的进度条。
    [转载]jQuery 图表插件 jqChart 使用
    作业.mp4
    嘣嘣嘣嘣嘣哥TnT
    我对GIT的认识`
    git的理解
    文章读后感
    团队作业7
    团队作业6
  • 原文地址:https://www.cnblogs.com/whatlonelytear/p/4849344.html
Copyright © 2011-2022 走看看