|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
1 O) o2 Q, D4 l$ O1 Z; f
# S( J5 M! m, z1 T. G. E" p使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现/ A: I& R5 t+ W. n# T6 E- B
15 A; _2 a& J, o, b
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
7 F* Y, c6 K3 L {/ A) ^ID NUMBER(11,0)
# V- e( z! ~3 MPROVINCEID VARCHAR2(6 BYTE)
C" a8 D% G% b2 _3 fPROVINCE VARCHAR2(40 BYTE)8 h9 |; z, R5 s8 S% c
数据可以根据自己的需要,插入一定量的测试数据& p$ L* b" ?0 g! F: R
oracle如何实现分页! T$ Q* _9 H& V# y& w1 ]- ~. {
2$ s5 l. z! Q+ ]' \
查询下总共数据量: `3 f. d# P& s
select count(*) from T_BASE_PROVINCE;
# m- t3 B+ q5 J, ^9 \在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数! r; y! a- V+ V
oracle如何实现分页
& L; k) U! W, b3 a' b9 k2 ? A5 B37 y) q3 U/ Y% Y$ ^
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
, [0 O( W- ]4 @; Doracle如何实现分页9 |9 C" S+ A" K) N
46 v) m4 @- T/ R
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
9 g9 v/ B" g# U. P7 Oselect * 1 p! ?0 P; v4 A$ X- i$ k
from (select t.*, rownum rn
; ?# G( r3 t1 S from (select */ ?9 f/ W3 i6 o! O
from T_BASE_PROVINCE
$ j+ {8 }6 x& D) N$ f0 H order by id asc) t, Q$ _$ [3 k* A+ }
where rownum <= 20)2 i4 r1 ]& e3 t9 q' i/ `. y! j. C$ i
where rn > 10;
/ h! c4 n" g' i; H8 a* Ooracle如何实现分页" k& z- |7 e9 I# h7 y& z0 x
53 j" P3 \6 \- g( l
分页语句二:如果不需要排序,可以使用如下语句& u0 a! I' P- J8 m
select a1.*
+ d, Z4 ~; Z, {4 L+ u$ p- rfrom (select t.*,rownum rn
* Q$ j: g0 O/ G1 Q from T_BASE_PROVINCE t * ?4 y$ Y: T3 f9 G( W$ |, _; V
where rownum <=20) a1
! F+ U+ K0 J2 v# D7 d) Rwhere rn >10;
0 h( D1 Q4 i9 F) foracle如何实现分页3 b$ ?, i" X& [# M! w
6- w. U+ T% p; E: S9 p9 `- O3 q5 C
分页语句三:between and方式,性能没有上面的高,但写法简单
w$ T# c& Z0 z' x% F Gselect a1.* 9 j k) R C2 E n/ y- M2 O2 U( t- G
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 R; @6 y" H$ m$ L; z; P/ h( T" v
where rn between 11 and 20;
2 x4 x7 W6 D9 [ v5 v5 Eoracle如何实现分页
$ I3 O0 N: E( ~ f3 e' U/ m- ^73 E* ~3 \$ Q( ]8 }8 T" ~
通用分页格式,page是页码,size是每页显示条数
# ~) X0 H5 B2 O$ N, e! ]( Qselect *
8 l0 [6 {: i& V) cfrom (select t.*, rownum rn3 S- L& U# l+ P. S9 _4 Z5 _; Q f; U
from (select *
/ ~* Q" \9 A7 E `* ] from T_BASE_PROVINCE
% @* \- I8 L o& Q3 N order by id asc) t; v2 [$ z8 n$ A/ X9 T/ p& `/ W
where rownum <= page*size)
* F W. p* F1 i# U1 ], |where rn > (page-1)*size; O1 ]: k5 V/ q
- p8 H7 O2 t( z# m3 E u |
|