Oracle的分页sql
Oracle的分页必须要使用rownum, rownum支持小于号,不支持大于号所有分页时需要子查询来处理大于号的问题
select *
from (select rownum rw, a.*
from (
select * from tb_team
) a
where rownum < 31) b
where b.rw > 20;
分页步骤:
(1) 查询全量结果集
(2) 以全量结果集作为一张表,以rownum作为查询条件小于开始行号,以全量结果集和rownum作为结果集,给rownum个别名
(3)以第(2)步的结果集作为一张表,以第二步的结果集中的rw作为查询条件让它大于开始行号,结果集为*即可
startNum:查询的开始行号。
endNum:查询的结束行号。
pageNo:当前页码。
pageSize:每页记录数。
totalCount:指定查询条件下的总记录数。
totalPage:指定查询条件下的总页数。
startNum=(pageNo-1)*pageSize
endNum=pageNo*pageSize+1
pageNo | pageSize | startNum | endNum |
1 | 10 | 0 | 11 |
2 | 10 | 10 | 21 |
3 | 10 | 20 | 31 |