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,salfrom( 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;
如图所示:
Being away from home, we have nothing but a desire to make a figure