`
风沙星辰
  • 浏览: 54789 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

Oracle分页

    博客分类:
  • sql
阅读更多


1. rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数。
2. rownum不能以任何基表的名称作为前缀。


按scott.emp为例:
按工资排序,并且以rownum作为序号
是这样写吗?

SQL> select rownum,emp.empno,emp.sal from emp order by sal;

    ROWNUM      EMPNO        SAL
---------- ---------- ----------
         1       7369        800
        12       7900        950
        11       7876       1100
         3       7521       1250
         5       7654       1250
        14       7934       1300
        10       7844       1500
         2       7499       1600
         7       7782       2450
         6       7698       2850
         4       7566       2975

    ROWNUM      EMPNO        SAL
---------- ---------- ----------
         8       7788       3000
        13       7902       3000
         9       7839       5000





让您失望了,rownum还是按自己的顺序。
应该这样写:

SQL> select rownum,e.empno,e.sal from (select * from emp order by sal) e;

    ROWNUM      EMPNO        SAL
---------- ---------- ----------
         1       7369        800
         2       7900        950
         3       7876       1100
         4       7521       1250
         5       7654       1250
         6       7934       1300
         7       7844       1500
         8       7499       1600
         9       7782       2450
        10       7698       2850
        11       7566       2975

    ROWNUM      EMPNO        SAL
---------- ---------- ----------
        12       7788       3000
        13       7902       3000
        14       7839       5000

已选择14行。



那么还想分页呢?再加一层子循环:
select rn,empno,sal from
(select rownum rn,t.* from 
(select * from emp order by sal,empno) t)
where rn between 2 and 7;

    
           RN      EMPNO        SAL  
    ---------- ---------- ----------  
            2       7900        950  
            3       7876       1100  
            4       7521       1250  
            5       7654       1250  
            6       7934       1300  
            7       7844       1500  
     
   已选择6行。  

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics