10級學員 張帥鵬課堂總結
簡單分析下如何實現:
考慮mysql中的實現分頁,select * from 表名 limit 開始記錄數,顯示多少條;就可以實現我們的分頁效果。
但是在oracle中沒有limit關鍵字,但是有 rownum欄位
rownum是乙個偽列,是oracle系統自動為查詢返回結果的每行分配的編號,第一行為1,第二行為2,以此類推。。。。
第一種:
select * from
(select a.*, rownum rn
from (select * from table_name) a
where rownum <= 40
)where rn >= 21
其中最內層的查詢select * from table_name表示不進行翻頁的原始查詢語句。rownum <= 40和rn >= 21控制分頁查詢的每頁的範圍。
上面給出的這個分頁查詢語句,在大多數情況擁有較高的效率。分頁的目的就是控制輸出結果集大小,將結果盡快的返回。在上面的分頁查詢語句中,這種考慮主要體現在where rownum <= 40這句上。
選擇第21到40條記錄存在兩種方法,一種是上面例子中展示的在查詢的第二層通過rownum <= 40來控制最大值,在查詢的最外層控制最小值。而另一種方式是去掉查詢第二層的where rownum <= 40語句,在查詢的最外層控制分頁的最小值和最大值。
第二種:
select * from (select e.*,rownum r from (select * from emp order by sal desc) e ) e1 where e1.r>21 and e1.r<=40;
紅色部分:按照工資降序排序並查詢所有的資訊。
棕色部分:得到紅色部門查詢的值,並查詢出系統的rownum並指定上別名。這一句就比較關鍵,起了乙個過渡的作用,首先要算出rownum來對紅色部分指定上序號,也可以為藍色外面部分用到這個變數。指定上查詢的開始記錄數和結束記錄的條件。
藍色部分:指定記錄從第幾條開始到第幾條結束,取出棕色部門的值來作為查詢條件的變數
總結:絕大多數的情況下,第乙個查詢的效率比第二個高得多。
Oracle分頁實現
1 在oracle資料庫中,rownum是oracle資料庫為查詢結果加入的乙個偽列。起始值為1。經常使用來處理查詢結果的分頁。2 因為rownum的特殊性,使用時候一般是分三層 第一層 先進行查詢及order by排序。第二層 查詢相應的列及rownum 第三層 在where 加入rouwnum條...
Oracle 分頁實現
分頁實現 實行兩行一頁 1 先查詢按編號排序的所有使用者資訊 select t.from t user t order byuser id 2 查詢資料的前四行,select a.rownum q from select t.from t user t order byuser id a where...
oracle怎麼實現分頁
分頁查詢格式 select from select a.rownum rn from select from table name a where rownum 40 where rn 21 其中最內層的查詢select from table name表示不進行翻頁的原始查詢語句。rownum 40...