|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
# T. Z; l/ @8 }4 |) ^5 ~( d# N
2 h6 Q6 S" f2 k- K: [% M使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
8 \. A0 e! B2 l. u1
5 F: a9 M5 H& C, s& h/ x" R+ P使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
/ e2 C K9 m4 s8 u2 T! _ID NUMBER(11,0)
8 \9 O2 v; V* j# f- vPROVINCEID VARCHAR2(6 BYTE)# m3 ^' }5 D0 Y( H" J6 {
PROVINCE VARCHAR2(40 BYTE)' Q- g; K4 g- N
数据可以根据自己的需要,插入一定量的测试数据
& Y0 K: l! f, D* E, Z0 Xoracle如何实现分页
+ M1 @9 f# V$ Y0 h3 e* Z$ h2
( c0 ]9 M- ^+ V' r( P7 G查询下总共数据量
- Y) k" t& V( H& ?; ~# X, }select count(*) from T_BASE_PROVINCE;
- Y6 z3 m. x7 x+ e0 l8 X; k在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
) @8 |# C$ Y1 W3 t4 Foracle如何实现分页
2 o8 H$ U$ O) y# @3
" W3 Q1 _* l, v8 S5 k前面的测试数据初始化完成之后,查询前20条大概有什么样的数据( Z7 F X/ o, h! _
oracle如何实现分页, C% ]6 K; [! K; o8 z1 d1 X
4
. J" d7 V7 J/ V& D3 F/ z5 m; V分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
5 Z6 V# w; x5 f7 D- c$ k, C; yselect * + r% {9 x' Q" ^/ ]2 r! E2 f% Z2 H1 n
from (select t.*, rownum rn- D) B4 j( d: h& t, {" k& L0 O+ g
from (select *5 _" x8 p D, s
from T_BASE_PROVINCE1 \& A2 V- b5 }& w: a i N
order by id asc) t4 a# ~5 W+ t/ @& D5 | {
where rownum <= 20) R, I5 }5 w l# u- h0 e
where rn > 10;
2 }: W; n/ v9 ?oracle如何实现分页/ h2 o! _3 k2 ?
5& Q) w6 f9 B3 u: s' {6 [# g% Z
分页语句二:如果不需要排序,可以使用如下语句/ `4 v6 y# v* l( `. Q" e( q
select a1.*
K8 j; u3 W- D' E6 G6 Jfrom (select t.*,rownum rn
p1 J, z9 W3 \; v3 |1 F: a! | from T_BASE_PROVINCE t 6 G% u- ?# D( v' \, i3 _, ^
where rownum <=20) a1
5 n5 P! ], q% x% ~) j* t& v9 zwhere rn >10;5 ~* V% d! l1 p! d9 x; V
oracle如何实现分页$ W8 ?% Q1 p- l5 H' G# g2 ?& [
6( Q( |; V7 ^* z2 E, o( c1 ^
分页语句三:between and方式,性能没有上面的高,但写法简单
j! E2 d: `& q# m E- Yselect a1.*
. ~' F) u6 W$ N- ^from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
- v2 R G6 r7 b" f( xwhere rn between 11 and 20;$ b( w1 l& `& u' T- ~, y
oracle如何实现分页) @9 j0 W7 Q& H
73 g$ L/ p/ B' b+ U/ m& m# M3 {
通用分页格式,page是页码,size是每页显示条数
6 ]4 w8 x9 D/ I; C3 m8 rselect *
2 T- S) \; T" z# L" f( D- s& W6 tfrom (select t.*, rownum rn9 j! t! v1 Z, G* U
from (select *
4 p/ f6 @! q5 F4 ~8 X from T_BASE_PROVINCE
" R1 y% E8 p {3 r* s, k3 q+ u order by id asc) t) s. J% g) l! B. I' U" u$ V; B
where rownum <= page*size)
0 q; t. A* `/ R" }- hwhere rn > (page-1)*size;
8 k3 T6 _6 n4 b3 U9 C
5 [3 M$ g2 b# D5 P |
|