请教个奇怪是SQL问题?
初学oracle,碰到个奇怪的问题,为什么条件between 1 and 5有结果,between 2 and 5就没结果了,20分哦,谢谢
1 select rownum,ename,sal,job from (select * from scott.emp order by sal desc)
2* where rownum between 1 and 5
SQL> /
ROWNUM ENAME SAL JOB
---------- ---------- ---------- ---------
1 KING 5000 PRESIDENT
2 SCOTT 3000 ANALYST
3 FORD 3000 ANALYST
4 JONES 2975 MANAGER
5 BLAKE 2850 MANAGER
SQL> ed
已写入文件 afiedt.buf
1 select rownum,ename,sal,job from (select * from scott.emp order by sal desc)
2* where rownum between 2 and 5
SQL> /
未选定行
------解决方案--------------------rownum的问题
select rn,ename,sal,job from (select scott.emp.*,rownum as rn from scott.emp order by sal desc)
where rnbetween 2 and 5
------解决方案--------------------这种写法之所以行不通,是因为 ROWNUM 列只有在记录被取出或过滤时才会应用到记录上。第一行在被取出时会被抛出,因为它的 ROWNUM 是1。然后,下一行被取出;它也会被抛出,因为它是新的“1”,以此类推,直到所有的行都被使用。所以这个查询不会返回任何记录。
当然,楼上的方法应该也是可行的。