Oracle高级查询——子查询(分页显示案例)

案例:分页查询显示员工信息:显示员工号、姓名、薪水

        1.每页显示四条记录

        2.显示第二页的员工

        3.按照月薪降序排序

分析:

        1.可以通过伪列rownum来显示查询信息所在的位置。

         注意:rownum只能使用<、<=,不能使用>、>=。 Oracle中的行号(rownum)永远从1开始

        2.先按照降序查询出员工信息

           select rownum,empno,ename,sal from emp  order by sal desc;

        3.将上面所查询出来的结果作为一个集合,查询出前面的8条记录

           select rownum, empno,ename,sal from (

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

           where   rownum <8;

        4.将已经查询出的前8条记录作为一个集合,这个集合中的rownum则不是行号,它可以作为所查询结果的

            第一列显示在最终的查询结果中。查询出第5、6、7、8条记录即第二页的员工信息。       

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

            where   r>4; 

          如图所示:

          


 

      

posted @ 2018-04-13 17:31  傲骄鹿先生  阅读(69)  评论(0编辑  收藏  举报