日期:2014-05-17  浏览次数:20945 次

菜鸟问题 关于ROWNUM
查询EMP表中排在第6-9位置上的雇员:

select ename,sal from emp
where rownum >= 6 and rownum <=9;

一直显示“未选定行”。。。。请大家指点指点 错在哪啦?

------解决方案--------------------
SQL code

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是一个伪列,不能使用>=,只能<=.但可以变化一下:
SQL code

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的 信息