admin 发表于 2017-11-3 16:22:57

Oracle 实现分页查询!



使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
1
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
ID        NUMBER(11,0)
PROVINCEID        VARCHAR2(6 BYTE)
PROVINCE        VARCHAR2(40 BYTE)
数据可以根据自己的需要,插入一定量的测试数据
oracle如何实现分页
2
查询下总共数据量
select count(*) from T_BASE_PROVINCE;
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
oracle如何实现分页
3
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
oracle如何实现分页
4
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
select *
from (select t.*, rownum rn
      from (select *
                from T_BASE_PROVINCE
               order by id asc) t
      where rownum <= 20)
where rn > 10;
oracle如何实现分页
5
分页语句二:如果不需要排序,可以使用如下语句
select a1.*
from (select t.*,rownum rn
      from T_BASE_PROVINCE t
      where rownum <=20) a1
where rn >10;
oracle如何实现分页
6
分页语句三:between and方式,性能没有上面的高,但写法简单
select a1.*
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
where rn between 11 and 20;
oracle如何实现分页
7
通用分页格式,page是页码,size是每页显示条数
select *
from (select t.*, rownum rn
      from (select *
                from T_BASE_PROVINCE
               order by id asc) t
      where rownum <= page*size)
where rn > (page-1)*size;

页: [1]
查看完整版本: Oracle 实现分页查询!