Oracle分页
/*
oracle 分页使用rownum
rownum 是一个伪列 是在查询记录生成的时候才会产生一系列数值1 2 3 4
用于数据库分页使用 分页必须使用子查询
rownum小于判断直接使用 大于必须使用子查询
如果表中记录 1000000 去除10 --20条记录
900000----900010
*/
--rownum的示例
select rownum ,emp.* from emp where rownum <4
--查询 5 条记录之后的所有数据
select rownum ,emp.* from emp where rownum > 5
--先查询生成rownum 再用于判断使用
select * from (select rownum r ,emp.* from emp )t
where t.r > 5 and t.r<11
--rownum优化sql语句
select * from (select rownum r ,emp.* from emp where rownum<11 )t
where t.r > 5
特殊例子(牵扯到排序,必须先排序,在生成rownum)
--找到员工表中工资最高的前三名, 如下格式
--1 先按照工资从高到低排序
select * from emp order by sal desc
--2 加入rownum 发生错乱 先生成rownum 又按照工资排序
select rownum,emp.* from emp order by sal desc
--3.先按照工资排好顺序 再来生成rownum
select rownum ,t.* from (select * from emp order by sal desc) t
--使用rownum过滤前三条
select rownum ,t.* from (select * from emp order by sal desc) t
where rownum<4