oracle分頁數據庫
其實oracle分頁很簡單,能夠這樣去理解它。oracle
select * from (select a.* from (select t.*,rownum rn from test_tab t where rownum<=?) a) t where t.rn>=?;spa
第一個?是終止行數到rownum的多少行數的意思,第二個?是實行的行,也就是rownum數從第多少開始。test
這樣來看就簡單了,好比我要看數據庫裏表的前5條記錄。select
select t.*,rownum rn from test_tab t where rownum<=5分頁
假如rownum<=10則是前10條,這個並不難理解。圖裏的rn=5im
那麼分頁呢?其實就是把該查出的結果集進行篩選。數據
select * from (select a.* from (select t.*,rownum rn from test_tab t where rownum<=10) a) t where t.rn>=6;img
經過看結果,能夠看出rn>=6 and rn <=10tab
這裏的6其實就是我以前列出的公式裏的第二個問號,10是第1個問號!
最終咱們是須要計算出這個6和10的。
第一個?爲endRowNum,第二個爲startRowNum
那麼得出
endRowNum=curpage(當前是第幾頁)*pagesize(每頁要顯示多少條)
startRowNum=curpage*pagesize-pagesize+1
其實我本身發現能夠不用三層嵌套查,語句以下:
select a.* from (select t.*,rownum rn from test_tab t where rownum<=endRowNum) a where a.rn>=startRowNum;