前面的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;
结果:
看来的确是这样的。