oracle分頁

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;

相關文章
相關標籤/搜索