查看: 3464|回复: 0

[转载电子书] Oracle 实现分页查询!

[复制链接]

6

主题

4

回帖

60

积分

管理员

积分
60
发表于 2017-11-3 16:22:57 | 显示全部楼层 |阅读模式

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

×

) c$ b" l7 y1 K! j) T3 h0 }, Z! z& u1 k7 y: J: s3 J; [5 Q
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
. g) }1 s/ t8 _/ b1# Y5 _# d9 A/ F5 `
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下6 L! Z; ~3 d( h& N! ~
ID        NUMBER(11,0)
% M- O" |7 E# ]$ |6 pPROVINCEID        VARCHAR2(6 BYTE): B1 ?3 m  {% m+ d% \8 b- F
PROVINCE        VARCHAR2(40 BYTE)
5 F- h" r; G4 i5 t; t( r数据可以根据自己的需要,插入一定量的测试数据
8 y7 L; V% I7 b0 {; e- S6 woracle如何实现分页
$ F9 A+ a. p$ V2
2 E- c% w% Z' p* j& e& r) Y查询下总共数据量: `' v$ @. e+ {9 h& N4 R
select count(*) from T_BASE_PROVINCE;% d9 M$ g! `5 v) ]  l
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数( M; C: f% }) k- q
oracle如何实现分页
" w% o5 J, B7 L; T2 p3) r3 ?9 j2 S# q4 X# n+ ?
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据1 I6 \. s# S1 r& v5 T" N& d
oracle如何实现分页
9 i) @9 j  r2 z44 U! K$ o6 K( T! ~" g
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果$ s$ O% L1 C- f8 N0 F& a
select *
- m+ ~' v, @' ?  Wfrom (select t.*, rownum rn, O9 H4 l9 J2 D' g6 A$ h$ R+ z  t  M
        from (select *
* h  `7 e0 Z% G& {6 X% L- `                from T_BASE_PROVINCE9 v1 p$ x9 V4 n& H$ d# j* m
               order by id asc) t# @% Q% T4 D* ?8 x7 o' P/ Z
        where rownum <= 20)/ t. o8 r1 s4 _2 y  Z0 T% V
where rn > 10;
: ^% U$ Y2 M1 F) B# Z9 toracle如何实现分页
% e7 E4 _7 h. V( ^5
" f. \: V" D$ A分页语句二:如果不需要排序,可以使用如下语句% f$ k. T% F( h/ m* @
select a1.*
, p2 ^6 o1 `# K2 `% @8 S0 jfrom (select t.*,rownum rn ( x& }; U/ n+ R+ J
        from T_BASE_PROVINCE t
, F1 ^4 g$ y- n3 d3 n! J* m! h        where rownum <=20) a1
/ Q$ R2 W' [7 |: x7 qwhere rn >10;
) y! d3 X/ {- ?* W% E% q1 [oracle如何实现分页# Q# O# t) u0 n# @: |' T8 Z
6* Z3 J4 m# F5 t  C* _# S1 i
分页语句三:between and方式,性能没有上面的高,但写法简单
/ v! B3 q% G% `) `5 q2 |- kselect a1.* 8 c0 C) \0 W' F
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 5 U# H0 |4 X* [5 B: |  u
where rn between 11 and 20;1 b) f2 s+ c7 i  k
oracle如何实现分页9 Y& m/ ^2 a" J5 z9 J+ @  h3 n6 n
7
" I% k5 S; T) `7 L; Z' Q: h6 v通用分页格式,page是页码,size是每页显示条数1 [) u# W& }# O3 x' I
select *
8 v* Q9 S; c" }& lfrom (select t.*, rownum rn
9 V9 o) H' i( K) b! b        from (select *9 J7 y8 _' p2 m- M; S8 ]' [/ b
                from T_BASE_PROVINCE2 h) Z6 d) R& o2 S4 w' v
               order by id asc) t
/ l" r' u4 {8 I        where rownum <= page*size)
1 Z, o$ o6 ?' ^1 F4 Z4 Uwhere rn > (page-1)*size;3 A% a8 w' ?# T3 _

/ U; R# b& \; C! G5 Z" p6 E
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部