為什麼oracle需要三層巢狀來實現分頁

2022-01-11 00:01:20 字數 675 閱讀 9205

看下面這個sql語句

select t2.*

from (

select t.*, rownum as row_num from t where rownum<=20 order

by asc10 

order

by asc

因為在查詢的時候,order by 的執行是在 select 之後的,所以在第一層查詢中,得到的結果可能是如下

id   row_num 

1        3

8        20

20      4

21      1

100    8

===20條記錄,其中row_num欄位的值在1-20

這樣的子結果集,在經過第二層過濾的時候,是得不到我們想要的結果的

id 11    

20 所以需要用如下的sql語句實現分頁排序

select t3.*

from (

select t2.*, rownum as row_num from (

select

*from t order

by t.id asc

) t2 where rownum<=

20) t3 

where t2.row_num>

11by t3.id asc

Oracle 三層巢狀做分頁

oracle分布查詢用三層巢狀 步驟如下 第三層 分頁過濾 select b.from 第二層 給定行號 select rownum r,a.from 第一層 排序 select from 表 order by 字段 awhere rownum 最大行 b where b.r between 最小行...

為什麼使用三層,自己的思考

為什麼分層?復用,維護方便 不用牽一髮而動全身 在bll層傳呼叫儲存過程 傳儲存過程名 還是在bll中寫sql 1 更好的維護和可讀性。它集中在乙個地方,能夠使三層架構的實現更加簡單 儲存過程將組成資料層 部署到客戶時,要修改邏輯只需修改儲存過程,無需重新編譯bll元件。除非增加儲存過程應用到程式中...

Map集合及三層巢狀

1.定義 無序,以鍵值 key,value 對的形式儲存資料,鍵唯一,值不唯一 注意 1 鍵key的底層結構為set集合,其特徵之一是無序 2 值value的底層結構為collection集合,其特徵之一是物件可重複 3 map集合不繼承collection介面 2.遍歷方式 3種 1 獲取鍵key...