问答详情
源自:5-2 案例1

关于子查询

select r,e1.*

from (select rownum r,e1.*

            from (select empno,ename,sal from emp order by sal desc ) e1

            where rownum<=8) e2

where r >4

这样不行?

select r,e2.*

from (select rownum r,e1.*

            from (select empno,ename,sal from emp order by sal desc ) e1

            where rownum<=8) e2

where r >4

这样就可以了??


提问者:慕粉1470295856 2018-08-29 00:43

个回答

  • 慕斯卡6169147
    2020-12-01 17:51:18

      select r,e1.*
      from (select 
                    rownum r
             ,e1.* 
           from (
              select 
                                empno
                   ,ename
                    ,sal 
                from emp 
               order by sal desc 
              ) e1  
                 where rownum<=8 ) e2
         where r >4

    e1 是最内侧的

    e2 是中间层

    最外层select 查出结果。

      select r,e1.*
      from (select 
                    rownum r
             ,e1.* 
           from (
              select 
    中间还隔着一层,所以不可以e1


  • 慕斯卡3555197
    2019-07-09 20:02:36

    select  rownum,e1.* 开头没问题   如果代入 R 的话 结合后面 where r>4  最后会出来两排R参数

  • 小远远不说远
    2018-09-01 12:41:46

    你看是 以谁为主表   你第一个查询的 是 e1.* 而e1表在 子表里面