Oracle之分页问题

前面的Top-N问题使用了reownum,但是又遇到个分页问题,将表emp的4行为1页输出,前4行很好做:

select rownum,empno,ename,sal
from emp
where rownum <=4;

但是4--8行怎么输出呢?

但是这样显然没结果;

如果就是想要用 rownum > 4 这种条件的话话就要用嵌套语句,把 rownum 先生成,然后对他进行查询。

我在查找资料时,发现是对子查询语句的rownum取了别名,where过滤时使用别名rn就可以正确显示,而使用rownum就不行。这是不是暗示rownum不能使用>或>=与=,但是别名可以呢。

select *
from(select rownum rn,empno,ename,sal
     from emp
     where rownum <=8)
where rn>4;

或者使用between...and...

select * from(select rownum rn,empno,ename,sal
              from emp)
where rn between 5 and 8;

结果:

 看来的确是这样的。

原文地址:https://www.cnblogs.com/Burgess-Fan/p/6793893.html