码迷,mamicode.com
首页 > 其他好文 > 详细

分页查询

时间:2016-05-16 12:54:29      阅读:108      评论:0      收藏:0      [点我收藏+]

标签:

*3.分页查询
  不同数据库分页查询方法不同,Oracle采用rownum列实现
分页查询;而MySQL采用的是limit实现。
 
  1)rownum列
   rownum列是Oracle自动添加的。默认是隐藏的,
一般被称为伪列。该列值记录的是记录的行编号。
  在建表或执行一个select查询后,Oracle都会自动追加
rownum列,在载入数据时形成一列顺序的记录行编号。
  //取出EMP的前5条记录
  select empno,ename,sal,rownum
  from emp
  where rownum<=5;
  //取出EMP中工资最高的前5条记录.
 select empno,ename,sal,rownum
 from(
  select empno,ename,sal
  from emp
  order by sal desc
  )
 where rownum<=5;
  //查询工资最低的前5个员工
select empno,ename,sal
from(
  select empno,ename,sal
  from emp
  order by sal
)
where rownum <=5;
 
  //查询最早入职的前5个员工
select empno,ename,hiredate
from(
 select empno,ename,hiredate
 from emp
 order by hiredate
)
where rownum<=5;
 
======如何获取前n条记录=========
 1)先按照排序字段进行记录的排序(构建临时的数据源)
   将要抓取的记录排在前面。
 2)将上面查询结果当做数据源进行查询,where条件部分
  使用rownum<?或rownum<=?条件
 注意:rownum字段当条件时不允许使用>,>=条件。
 =条件只可以使用=1.
 
=========================
//取工资最高的排在第5(不包含)-10位的员工
select empno,ename,sal
from(
  select empno,ename,sal,rownum rn
  from(
     select empno,ename,sal
     from emp
     order by sal desc
  )
)
where rn>5 and rn<=10;
//查询入职最早的排在第3(不包含)-6位的员工
select empno,ename,hiredate
from(
  select empno,ename,hiredate,rownum rn
  from(
   select empno,ename,hiredate
   from emp
   order by hiredate
  )
)
where rn>3 and rn<=6;
 
=======按某字段排序取前n到m之间的记录=========
 1)先写最内部的select,将需要分页显示
    所有记录查询出来,按字段排序。
   (将需要抓取的记录排在前面)
 2)再写中间的select,将rownum列提取出来,
    在提取时给rownum列指定别名
 3)最后写最外层的select,利用rownum别名
   充当where过滤条件.
   例如:rownum别名>n and rownum别名<m
==============================
 //查询2080到2083年期间入职的员工信息,
 //显示最近入职的排在3(不包含)-6位的员工信息
select empno,ename,hiredate
from(
 select empno,ename,hiredate,rownum rn
 from(
  select empno,ename,hiredate
  from emp
  where to_char(hiredate,‘yyyy‘) >=‘2080‘
    and to_char(hiredate,‘yyyy‘) <=‘2083‘
  order by hiredate desc
 )
)
where rn>3 and rn<=6;

分页查询

标签:

原文地址:http://www.cnblogs.com/yunman/p/5497563.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!