|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
3 E) `0 d7 W, t* I) Z
: `0 V& H6 }3 q# W* c) h使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现# J, Z5 Z, a* X" a
1
; r0 _1 o' Q) E" n4 G3 [使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
4 a) z5 X0 T% kID NUMBER(11,0)
0 `$ r* T1 E, pPROVINCEID VARCHAR2(6 BYTE)
8 {3 ?( W6 o$ R1 m/ Y B. zPROVINCE VARCHAR2(40 BYTE)
" p1 c" m2 p. {; Q( ^$ b$ p8 [, I+ q数据可以根据自己的需要,插入一定量的测试数据: J0 { L- }( M
oracle如何实现分页
! \2 D# s5 p0 \; n7 `8 Q2. P r U3 F8 M# @% {
查询下总共数据量( @9 b+ ^5 }& I) ?! t% A! o
select count(*) from T_BASE_PROVINCE;
' v1 L) q. x* z/ d" C& D" }在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
~' F, r$ w1 G3 }$ D# O' Doracle如何实现分页
6 o2 _7 G Q6 U' O. B7 J1 N9 l0 f3- } @8 ^' q5 K( m4 I& i
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
1 [# V* Z! t2 e ]2 t* W2 ^5 Joracle如何实现分页
- C1 ~! @9 l. l; S# ^4" `( w( U, C( r. S% T
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果7 } V$ c0 P$ p; k
select * 8 U. C0 W7 q- t
from (select t.*, rownum rn
& J# W" `0 o4 ~* o" ~, o4 Q from (select *& M; S/ `7 A; g7 h7 q5 n: V
from T_BASE_PROVINCE
; H5 x2 E0 z. A9 `5 G# o# o order by id asc) t
7 s& y8 r. ` s4 Q% a7 q' [! Z where rownum <= 20)
6 B9 c% @7 r0 X9 D8 c* e2 O/ Nwhere rn > 10;0 `! p G0 X5 ]/ N" ^
oracle如何实现分页5 S' F! q* m9 q& ]2 Z3 v* t1 z
5
0 X5 k( @6 J9 \' G" Z6 K7 k; R分页语句二:如果不需要排序,可以使用如下语句+ c7 w! Q% o# ]* {- f u. n& X0 m
select a1.*
, S- o3 H# }$ Z1 ]' a9 v3 g1 ^. Jfrom (select t.*,rownum rn
' ?, {# T, W, B. w. F from T_BASE_PROVINCE t
1 Q' y8 c9 A/ Q+ {( A1 V where rownum <=20) a1
. O* y7 H2 P8 U' Bwhere rn >10;8 \6 D/ \2 W# G. s
oracle如何实现分页( G9 V I+ p( S
6 @/ Z0 L# g" q8 D
分页语句三:between and方式,性能没有上面的高,但写法简单
2 s, c! x- {* N" b8 U4 K7 c+ @select a1.*
& _# A6 e0 W7 Pfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 0 w' ?; t+ Y O* y
where rn between 11 and 20;# L" e j! g7 c4 R5 N
oracle如何实现分页
* x J- h/ Z; ^% q' ?7
6 i" \+ V% B: X; z" E. ]" A) E0 Z通用分页格式,page是页码,size是每页显示条数8 f c% D4 _3 i7 d% U" {
select * ; `0 z" b) B% M
from (select t.*, rownum rn% L* G2 Q: L, b- R# {7 p& k
from (select *' V8 A7 ?5 v D' M' z. v4 Q
from T_BASE_PROVINCE1 n- {8 E; f, l. m8 W; E* d
order by id asc) t
1 f7 V1 T" x! V9 v1 W$ |9 _% u where rownum <= page*size)) \% j1 K+ }) c8 R+ ?! x$ n
where rn > (page-1)*size;
& y) t) G3 J! z+ y' U, K4 d1 H5 L
|
|