Oracle的分頁查詢

2021-09-18 08:26:42 字數 1502 閱讀 8285

快速通道:

結論oracle的分頁查詢使用很廣泛,也較為簡單,主要根據是偽劣值rownum來實現,具體分兩步走:

首先要獲得表中的num (這裡借用已經建好的student表方便舉例)

查詢結果即可作為子表提供給下一步查詢

假設分別取第1條資料到第5條資料和第6條資料到第10條資料

select * from (select rownum rn, s.* from student s) where rn>=1 and rn<=5;

select * from (select rownum rn, s.* from student s) where rn>=6 and rn<=10

注意!!這裡子表的rownum一定需要重新命名,不然外表查的是自己的偽劣值rownum遇到大於判斷會出現空表!

假設你要查第n頁數,每頁顯示size條資料

起始記錄號(從1開始)為:(n-1)*size

結束記錄號為:n*size

那麼sql語句為:

select * from (select rownum rn, 表名.* from 表名) where rn>=(n-1)*size and rn<=n*size;

注意!!這裡子表的rownum一定需要重新命名,不然外表查的是自己的偽劣值rownum遇到大於判斷會出現空表!

更特殊的是要求先對某一欄位進行排序後再分頁因為order by語句是最後執行,此時按照上面的sql語句查詢時會出錯:

解決辦法是中間再加一層巢狀取排序後的rownum值,如下:

從內到外依次進行按年齡進行排序/對排序後的表取rownum值/進行分頁,

Oracle的分頁查詢

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

oracle的分頁查詢

其中最內層的查詢select from table name表示不進行翻頁的原始查詢語句。rownum 40和rn 21控制分頁查詢的每頁的範圍。上面給出的這個分頁查詢語句,在大多數情況擁有較高的效率。分頁的目的就是控制輸出結果集大小,將結果盡快的返回。在上面的分頁查詢語句中,這種考慮主要體現在wh...

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....