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;