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

posted on 2017-12-18 16:44  一只小小小兔兔  阅读(117)  评论(0编辑  收藏  举报

导航