oracle分頁查詢

2021-05-27 17:38:30 字數 1027 閱讀 1348

有三種方式:

1、row_id

2、rownum

3、分析函式

效率從高到低:1>2>3,第三種方式最差

這裡講一下rownum方式,拿oracle自帶的emp表示例。

要求:取出第5-10條的emp表資料

1、先查詢出所有的emp記錄

select * from emp

2、將查詢結果作為乙個子表,作為子表的目的是並將rownum引入到「新錶a1」中

select a1.* ,rownum rn from (select * from emp )a1

此時a1表中會有從1-count(1)的rn列,但是由於oracle的rownum比較特殊,不支援連續兩次使用.

(兩次使用的意思是:假如在where語句後邊加上rownum>=5 ,那麼這算第一次使用了rownum ,如果此時再使用rownum<=10的話,這就是第二次使用了)所以不支援這種寫法。

所以使用select a1.* ,rownum rn from (select * from emp )a1 where rownum>=5 and rownum<=10取不到第5-10條的emp表資料,結果是沒有記錄。

3、因此如果要取第5-10條的emp表資料,要分成兩個步驟,第一次使用rownum取出<=10的資料(即1-10的資料),這時候將這些結果再次作為子表a2,然後在a2,中再取第5-10的資料。sql語句如下:

select a2.* from (select a1.* ,rownum rn from (select * from emp )a1 where rownum <=10) a2 where rn>=5

如果要取emp表的第3-8條資料

只需要修改以上sql中紅字的數字,如下:

select a2.* from (select a1.* ,rownum rn from (select * from emp )a1 where rownum <=8) a2 where rn>=3

備註:如果要修改輸出的選擇列、或者排序等等的話,只需要在最裡層查詢語句中(紅色部分)修改。

ORACLE分頁查詢

單錶分頁 start num 起始行號 end num 截止行號 select t.from select s.rownum rn from table s where rownum end num t where rn start num 多表分頁 select from select temp....

Oracle分頁查詢

oracle的分頁查詢語句基本上可以按照本文給出的格式來進行套用。分頁查詢格式 select from select a.rownum rn from select from table name a where rownum 40 where rn 21 其中最內層的查詢select from t...

oracle 分頁查詢

1 要把rowid來分 select from t xiaoxi where rowid in select rid from select rownum rn,rid from select rowid rid,cid from t xiaoxi order by cid desc where r...