您的位置:首页 > 数据库 > Oracle

oracle分页

2016-08-28 00:00 183 查看
oracle分页

其实oracle分页很简单,可以这样去理解它。

select * from (select a.* from (select t.*,rownum rn from test_tab t where rownum<=?) a) t where t.rn>=?;

第一个?是终止行数到rownum的多少行数的意思,第二个?是实行的行,也就是rownum数从第多少开始。

这样来看就简单了,比如我要看数据库里表的前5条记录。

select t.*,rownum rn from test_tab t where rownum<=5



假如rownum<=10则是前10条,这个并不难理解。图里的rn=5

那么分页呢?其实就是把该查出的结果集进行筛选。

select * from (select a.* from (select t.*,rownum rn from test_tab t where rownum<=10) a) t where t.rn>=6;



通过看结果,可以看出rn>=6 and rn <=10

这里的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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Oracle分页