有三種方式:
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...