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;

相关文章
相关标签/搜索