首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

请问个奇怪是SQL有关问题

2012-02-11 
请教个奇怪是SQL问题?初学oracle,碰到个奇怪的问题,为什么条件between1and5有结果,between2and5就没结果了

请教个奇怪是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”,以此类推,直到所有的行都被使用。所以这个查询不会返回任何记录。
当然,楼上的方法应该也是可行的。

热点排行