zoukankan      html  css  js  c++  java
  • oracle 中 rownum 和 row_number()

      简单的介绍下oracle 中rownum 和 row_number() 使用,实例演示。

      参照:http://www.cnblogs.com/zjrstar/archive/2006/08/31/491090.html  

      我们先创建一个例子用以说明,偷个懒,就用上面那位童鞋的。

    create table student (ID char(6), name VARCHAR2(10));
    insert into student values('200001','张一');
    insert into student values('200002','王二');
    insert into student values('200003','李三');
    insert into student values('200004','赵四');
    commit;

    1)

    SQL> select * from student where rownum>=1;

    ID NAME
    ------ ----------
    200001 张一
    200002 王二
    200003 李三
    200004 赵四

    2)

    SQL> select rownum ,t.* from student t where rownum>=1;

    ROWNUM ID NAME
    ---------- ------ ----------
    1 200001 张一
    2 200002 王二
    3 200003 李三
    4 200004 赵四

    3)

    SQL> select rownum ,t.* from student t where rownum <3;

    ROWNUM ID NAME
    ---------- ------ ----------
    1 200001 张一
    2 200002 王二

    4)

    SQL> select rownum ,t.* from student t where rownum >=2;

    未选定行

    SQL>

    Why?=>1.rownum是一个伪列;rownum总是从1开始,连续不断。

    5)

    SQL> select rownum,t.* from student t order by name desc;

    ROWNUM ID NAME
    ---------- ------ ----------
    4 200004 赵四
    1 200001 张一
    2 200002 王二
    3 200003 李三

    6)

    SQL> select row_number() over(order by name desc) rn ,t.* from student t;

    RN ID NAME
    ---------- ------ ----------
    1 200004 赵四
    2 200001 张一
    3 200002 王二
    4 200003 李三

    以上5)和6)可以做比较:为什么两者的结果rownum和rn不同,注意row_number() over(...)用法。

    7)

    SQL> select * from (select rownum rn,t.* from student t) tt where tt.rn between
    2 and  3;

    RN ID NAME
    ---------- ------ ----------
    2 200002 王二
    3 200003 李三

    这种方式可以分页取数据,但是请记得上述的5),伪列rownum不是有序的;如果要进行排序的话,请尽量使用 rownumber() over(...)

    8)

    SQL> select * from (select row_number() over(order by name desc) rn ,t.* from st
    udent t) tt where tt.rn between 2 and 3;

    RN ID NAME
    ---------- ------ ----------
    2 200001 张一
    3 200002 王二

    9)

    SQL> select * from (select rownum rn ,t.* from student t order by name desc)tt w
    here tt.rn between 2 and 3;

    RN ID NAME
    ---------- ------ ----------
    2 200002 王二
    3 200003 李三

    请比较8)和9) 理解7)下的注示。

    好吧,就这么多吧,我想上面举得这些例子,已经将rownum 和 row_number 常见用法,以及各自的特征用法都做了举例。

  • 相关阅读:
    css 计数器
    页面自动刷新的几种方式
    jq的“钉”插件--jquery.pin.js
    CSS3之Transform(变形)一
    css3之Transition(转换)
    常用css+css3集锦
    JQuery需要手动回收xmlHttpRequest对象
    javascript 闭包暴露句柄和命名冲突的解决方案
    firefox浏览器删除插件
    jQuery中的.bind()、.live()和.delegate()之间区别分析
  • 原文地址:https://www.cnblogs.com/preacher/p/3910586.html
Copyright © 2011-2022 走看看