Oracle rownum的理解

--rownum
select * from emp;
select rownum,e.* from emp e;

select rownum,e.* from emp e where rownum < 5 --显示前4条
select rownum,e.* from emp e where rownum <= 5 --显示前5条
select rownum,e.* from emp e where rownum = 5  --找不到记录 因为编号为5重新从1开始
select rownum,e.* from emp e where rownum > 5 --找不到记录
select rownum,e.* from emp e where rownum >= 5 --找不到记录

select rownum,e.* from emp e order by sal desc; -- order by ,rownum失效 -->解决方案:用子查询
--分页 取编号6-10得记录
select rownum,e.* from emp e where rownum <= 10
minus
select rownum,e.* from emp e where rownum <= 5
--分页(带排序) 取编号6-10的记录 方法1:
select rownum,t.* from(  
select e.* from emp e order by sal
) t where rownum <=10
minus
select rownum,t.* from(
select e.* from emp e order by sal) t where rownum <= 5
--分页(带排序)取编号6-10的记录 方法2:
select e.* from emp e order by sal  --1.以工资排序 获取所有记录

select rownum,t.* from (
select e.* from emp e order by sal) t where rownum <=10  --2.获取前10条记录

select t2.* from(
select rownum rn,t.* from (
select e.* from emp e order by sal) t where rownum <=10  --3.从前10条记录中获取6-10的记录
)t2 where rn > 5

 

posted @ 2017-05-23 16:58  清风追梦enjoy  阅读(323)  评论(0编辑  收藏  举报