关于子查询

来源:5-2 案例1

慕粉1470295856

2018-08-29 00:43

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

这样就可以了??


写回答 关注

3回答

  • 慕斯卡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表在 子表里面 

Oracle高级查询

数据库开发中应用广泛的高级查询,本教程通过大量的案例详细讲解

62861 学习 · 144 问题

查看课程

相似问题