|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
# D8 f* ^ H' \- T4 \$ _4 K( W+ C, a% L/ `4 I
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现+ D( w2 }$ J; ^" I v7 j, u) U P
17 N8 \4 O l; l" R; H7 a1 \9 A, x
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
0 S. F* ]" d* S, B$ u* x, G% R# @) TID NUMBER(11,0)1 i9 _" f3 \$ d# [! b
PROVINCEID VARCHAR2(6 BYTE)2 j3 Q: D m; e
PROVINCE VARCHAR2(40 BYTE)
+ L( ~) i1 r( U) Y) H! W数据可以根据自己的需要,插入一定量的测试数据
4 w& [; j" ?) @( G8 ~6 L$ Moracle如何实现分页
/ ~, K9 y& c4 n9 }) W. R4 h: G X( ^, a2
& c4 }! a4 v- J( O查询下总共数据量1 t" ^; m. g% o% C% B
select count(*) from T_BASE_PROVINCE;
& f0 Y! A- |( y在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数: e9 ~3 i" G, d9 x
oracle如何实现分页8 A4 p' G! O/ M+ q( c5 D
3
2 K. t: B6 c& m1 s! O0 u8 w- Q$ Y: c# C前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
8 ~% u: \ r- H* R P: ?( E3 loracle如何实现分页
7 Z! \" S( r2 ~$ _2 { ]4
5 k1 @2 ? C+ ~$ c5 [% g分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果& G# T: j( K& B" Y7 o# m
select * 8 b% B+ j% N6 w2 v" y6 ^$ l
from (select t.*, rownum rn
. `: s8 O j1 m- Y) { from (select *
( w# ?# y: G/ D2 c0 b- d from T_BASE_PROVINCE; Q; W! ^/ L- p* z" w& N% m5 l3 Q
order by id asc) t
# K0 }1 S3 a! z$ @7 q; @ where rownum <= 20)
1 I; `$ H3 B0 N4 g, j* ]0 Cwhere rn > 10;3 b! s5 C5 s# Z# O! ^
oracle如何实现分页7 B" ]9 i" k; D
5
6 Z, E+ W0 Z% D& u分页语句二:如果不需要排序,可以使用如下语句6 h! k4 k9 z% |% G! I! F m% K
select a1.*
* M$ Y+ W0 D: r" h3 D" T. ]from (select t.*,rownum rn 2 b. v6 |6 P2 {, D8 \
from T_BASE_PROVINCE t 1 e7 ]. T% ~5 Q6 m
where rownum <=20) a1 * W: e9 V2 j2 |1 w8 [2 Q
where rn >10;5 X% ^# R1 C/ {" F! O* U
oracle如何实现分页
% k" S$ O, n: E0 w' E60 x; D/ i( {, T8 D+ e5 p
分页语句三:between and方式,性能没有上面的高,但写法简单
3 R4 g; [+ h8 Rselect a1.*
7 }" z9 C, S; h5 d$ x- {& K! R* Hfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1
5 Z% C1 ?1 v6 U% K( I, dwhere rn between 11 and 20;& ~6 O; s1 L1 G9 a' y# l5 I
oracle如何实现分页9 N& R% |* P& Q. \
7" y t; i: _& d
通用分页格式,page是页码,size是每页显示条数2 v0 x/ ^# v; J6 v
select *
! e8 f* \7 h6 B8 a3 Ffrom (select t.*, rownum rn
5 P+ K3 Q' B' g) J from (select *
3 F/ ]$ v R0 Q5 b# k& X from T_BASE_PROVINCE
- t/ F- F) s1 H7 ^! Y4 |% s order by id asc) t
?' Z# ]9 |1 j& H where rownum <= page*size)
+ I+ B" q. P7 S5 c! ], ^. Zwhere rn > (page-1)*size;5 B5 x2 ?! b* | Z6 ]* n, m
& S. {1 w& G) V" S0 y
|
|