日期:2014-05-17 浏览次数:20945 次
select * from ( select ename,sal,rownum rn from emp where rownum <=9) s where s.rn >= 6; --下面的资料你也可以学习下 --http://database.51cto.com/art/201106/270156.htm
------解决方案--------------------
rownum是一个伪列,不能使用>=,只能<=.但可以变化一下:
select * from (select ename, sal, rownum as rn from emp) where rn >=6 and rownum <=9;
------解决方案--------------------
你rownum做为记录选取条件,可以选出数据.
不过,如果要在不同时间多次查询,选出的结果可能是不同的.
------解决方案--------------------
rownum是伪列 先查出rownum 然后再查6-9
select * from (select ename,sal,rownum r from emp) where r between 6 and 9
------解决方案--------------------
rownum是标注查询结果集的,前提必须又返回集,即从0开始。
应注意区分与rowid的用法。网上可以搜一下,解释很详细
------解决方案--------------------
select * from (select a1.*,rownum rn from (select * from emp) a1 where rownum < 9 ) where rn>6
最里面的select * from emp 查出所有的信息 然后将他做为一张表看待
然后将伪列和表信息一起查出 select a1.*,rownum rn from (select * from emp) a1 在加入条件
加入条件 where 的时候 要先 去掉 后面的信息 也就是 rownum < 9 在将查询结果看成一个表
取 > 6的 信息