Oracle中的分页查询
以scott账户中的emp表和dept表为例
最内层:主要负责排序
String sql = "select e.* from emp e inner join dept d on e.deptNo = d.deptNo where order by orderStd orderType";
1
orderStd :排序字段名
orderType:排序类型(desc asc)
中间层:主要负责使用rownum关键字来进行分页 以及起别名、做小于项的设置
sql = "select rownum r ,t.* from("+ sql +") t where rownum < pageSize*pageNumber + 1";
1
pageSize:一页所呈现的数据量
pageNumber:页数
外层:分页的大于项设置
sql = "select * from ("+ sql +") where r > pageSize*(pageNumber - 1)";
1
例如:查询emp表中的第二页数据,以降序显示,每页显示四条数据
orderStd :empNo
orderType:desc
pageSize:4
pageNumber:2
sql语句如下
select * from(
select rownum r,t.* from(
select e.* from emp e inner join dept d on e.deptNo = d.deptNo order by e.empNo desc ) t
where rownum < 9)
where r > 4;