oracle分页
oracle rownum
oracle select语句会为查询结果自动添加一列`rownum`,该列是select结果集从1开始编号直至最后
Mysql中有offset和limit,能很容易的实现分页,但是Oracle中没有,在Oracle中实现分页只能借助于伪列rownum
rownum被称为伪列
分页第一种写法
-- 定位到第一页
select * from emp where rownum<5;
-- 定位到第二页
select tmp.* from (select rownum r,emp.* from emp where rownum<9) tmp where r>4;
-- 定位到第三页
select t.empno,t.ename,t.job from (select rownum r,emp.empno,emp.ename,emp.job from emp where rownum<13) t where r>8;
select t.empno,t.ename,t.job from (select rownum r,emp.empno,emp.ename,emp.job from emp where rownum<[@1]) t where r>[@2];
-- 页容量 size {1,2,3,...}页编号 pagenum{1,2,3,...}
-- 参数@1:size*pagenum + 1
-- 参数@2:size*(pagenum-1)
分页第二种写法
第二种写法实际上就是第一种写法的粗暴版本,在许多框架中采用这样的写法,第一种写法效率优于第二种写法
select t.empno,t.ename,t.job from (select rownum r,emp.* from emp)t where t.r>4 and t.r<9;
select t.empno,t.ename,t.job from (select rownum r,emp.* from emp)t where t.r>[@1] and t.r<[@2];
-- 页容量 size {1,2,3,...}页编号 pagenum{1,2,3,...}
-- 参数@1:size*(pagenum-1)
-- 参数@2:size*pagenum + 1
点赞
评论留言