oracle分页sql

来源:互联网 发布:php和java哪个好找工作 编辑:程序博客网 时间:2024/04/30 18:37


oracle中四种分页。mysql中用limit关键字

第一种方法:minus差分页


SQL> select * from emp where rownum<=10 minus
  2  select * from emp where rownum<=5;

 
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7698 BLAKE      MANAGER    7839 1981/5/1 星期   2850.00               30
 7782 CLARK      MANAGER    7839 1981/6/9 星期   2450.00               10
 7788 SCOTT      ANALYST    7566 1987/4/19 星   1000.00               20
 7839 KING       PRESIDENT       1981/11/17    5000.00               10
 7844 TURNER     SALESMAN   7698 1981/9/8 星期   1500.00      0.00     30
 
SQL> select * from emp where rownum<=10;
 
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7369 SMITH      CLERK      7902 1980/12/17    1000.00               20
 7499 ALLEN      SALESMAN   7698 1981/2/20 星   1600.00    300.00     30
 7521 WARD       SALESMAN   7698 1981/2/22 星   1250.00    500.00     30
 7566 JONES      MANAGER    7839 1981/4/2 星期   1000.00               20
 7654 MARTIN     SALESMAN   7698 1981/9/28 星   1250.00   1400.00     30
 7698 BLAKE      MANAGER    7839 1981/5/1 星期   2850.00               30
 7782 CLARK      MANAGER    7839 1981/6/9 星期   2450.00               10
 7788 SCOTT      ANALYST    7566 1987/4/19 星   1000.00               20
 7839 KING       PRESIDENT       1981/11/17    5000.00               10
 7844 TURNER     SALESMAN   7698 1981/9/8 星期   1500.00      0.00     30
 
10 rows selected


注意:这样一minus就剩下最后剩下的几行。


第二种:rownum伪列

SQL> select *
  2  from (select rownum tid ,t.* from emp t where rownum<=10)--把select当做一个表
  3  where tid<=10 and tid>=5

  4  ;
 
       TID EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
---------- ----- ---------- --------- ----- ----------- --------- --------- ------
         5  7654 MARTIN     SALESMAN   7698 1981/9/28 星   1250.00   1400.00     30
         6  7698 BLAKE      MANAGER    7839 1981/5/1 星期   2850.00               30
         7  7782 CLARK      MANAGER    7839 1981/6/9 星期   2450.00               10
         8  7788 SCOTT      ANALYST    7566 1987/4/19 星   1000.00               20
         9  7839 KING       PRESIDENT       1981/11/17    5000.00               10
        10  7844 TURNER     SALESMAN   7698 1981/9/8 星期   1500.00      0.00     30
 
6 rows selected

第三种:not in 相反

SQL> select *
  2  from emp
  3  where empno not in(select empno from emp where rownum<=5) and rownum<=5
  4  ;

 
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7698 BLAKE      MANAGER    7839 1981/5/1 星期   2850.00               30
 7782 CLARK      MANAGER    7839 1981/6/9 星期   2450.00               10
 7788 SCOTT      ANALYST    7566 1987/4/19 星   1000.00               20
 7839 KING       PRESIDENT       1981/11/17    5000.00               10
 7844 TURNER     SALESMAN   7698 1981/9/8 星期   1500.00      0.00     30
 
SQL> 


第四种:id升序(id =empno)

SQL> select *
  2  from emp2
  3  where empno>(select max(empno) from emp2 where rownum<=5) and rownum<=5
  4  ;
 
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
----- ---------- --------- ----- ----------- --------- --------- ------
 7698 BLAKE      MANAGER    7839 1981/5/1 星期   2850.00               30
 7782 CLARK      MANAGER    7839 1981/6/9 星期   2450.00               10
 7788 SCOTT      ANALYST    7566 1987/4/19 星   1000.00               20
 7839 KING       PRESIDENT       1981/11/17    5000.00               10
 7844 TURNER     SALESMAN   7698 1981/9/8 星期   1500.00      0.00     30



SQL> select rownum tid,t.*
  2  from emp t
  3  where rownum<=5
  4  ;
 
       TID EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO
---------- ----- ---------- --------- ----- ----------- --------- --------- ------
         1  7369 SMITH      CLERK      7902 1980/12/17    1000.00               20
         2  7499 ALLEN      SALESMAN   7698 1981/2/20 星   1600.00    300.00     30
         3  7521 WARD       SALESMAN   7698 1981/2/22 星   1250.00    500.00     30
         4  7566 JONES      MANAGER    7839 1981/4/2 星期   1000.00               20
         5  7654 MARTIN     SALESMAN   7698 1981/9/28 星   1250.00   1400.00     30


0 0
原创粉丝点击