|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
. W2 a+ F/ D# V4 F' b! e/ \
% `# c- |4 E2 B8 r" `* Y1 `使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
- d3 [$ g3 `- F1
+ i3 [- r2 Y2 Q) H6 q使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
8 d$ ^4 C' I$ W' R X. W, d# lID NUMBER(11,0); S+ l1 n0 d: E8 N2 }$ e
PROVINCEID VARCHAR2(6 BYTE)# W" I# e4 K! f
PROVINCE VARCHAR2(40 BYTE)
& w7 o5 a: I) H2 [! W D! n数据可以根据自己的需要,插入一定量的测试数据
; T9 m% G. R9 b) ooracle如何实现分页* w8 G( |. }* J% U) P. F, T/ B' V
27 ^4 @2 V) W, E6 ] o
查询下总共数据量9 E8 Z1 Z' Y1 c. {1 F3 u
select count(*) from T_BASE_PROVINCE;6 N) f/ _5 O) U5 C2 T
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
/ ^8 M6 `5 s! h# h" n. S# A( toracle如何实现分页
& _2 m; N1 p4 T3 k9 }) H+ _3/ {3 m; `, l# d$ a+ a2 S& ^$ N
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
$ [% C" f8 z) O+ Coracle如何实现分页
$ | P$ u% `% r. Y! I* I4( ~$ T' q) v. s5 e9 _' O: D2 L
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果" c* F1 f3 }) m) I+ F
select * ; R+ b: Q: R) `, V1 `& L4 v" H5 d
from (select t.*, rownum rn) s" u7 i! K4 x- W# r
from (select *8 M H0 T) m$ C
from T_BASE_PROVINCE
, @, ~" _1 y7 U- k order by id asc) t
1 r& ~& P" [8 k P where rownum <= 20)
( M. t8 r' x1 W) o; n' u' `0 Z1 w2 ~where rn > 10;
% `; w( W7 K! b! K6 a* |9 N, }" Moracle如何实现分页9 p. }8 T$ T# c; s+ m/ h6 y! ?; {0 _
5; |& }% f: C) R0 [- c
分页语句二:如果不需要排序,可以使用如下语句
1 K/ a. I; R( @& [9 @select a1.* % v3 L; h( E; e
from (select t.*,rownum rn
' I! o9 ~1 g, ~" a1 { from T_BASE_PROVINCE t
1 o2 {5 Q! _; O3 _ where rownum <=20) a1 ; E' I6 \% y0 \$ d, O% L
where rn >10;' B) }: J; T' e9 h( g
oracle如何实现分页+ U2 T5 ^* a2 z5 w3 P( \
6
5 J, U) s) `! u0 f; G( e i1 h分页语句三:between and方式,性能没有上面的高,但写法简单
3 l0 C* u, R: c, t' pselect a1.*
( F' {$ Q. _1 ?6 Q9 { _# Dfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 ' X0 i3 B% A1 c" t2 I
where rn between 11 and 20;" ]) M4 [( K3 ~: V
oracle如何实现分页8 L- a. |6 ?& N$ l; o$ o! p
7
! J0 n8 T; x) K+ Z5 ]$ `通用分页格式,page是页码,size是每页显示条数8 _9 Y5 Z" J0 p6 K4 y
select *
! b, I* K# o' Ffrom (select t.*, rownum rn
0 `5 i+ d6 P, p5 P1 v from (select *
: P7 Z" }+ V# X3 P3 \3 _5 g from T_BASE_PROVINCE
7 C7 j8 R/ Z4 K' H& @# b order by id asc) t$ R5 D; Z3 r) W( D8 A
where rownum <= page*size)4 H; X, n9 J2 v/ r8 K9 M
where rn > (page-1)*size;/ L" B2 e/ R! S6 S o
/ `+ t: c0 Z- C8 |1 G/ f+ r' s2 u |
|