|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
( e5 b# @' s. ~0 R5 M5 Z
3 X) w0 N. ]7 z( W8 ?9 m& u使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
1 E8 c! w3 \# P% m& j8 P3 G4 M1' S, [/ R6 z& [1 C1 ?
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
8 h; S4 h! H6 a5 Y8 G# ^& LID NUMBER(11,0): b4 \, s- F; X& c) P6 |
PROVINCEID VARCHAR2(6 BYTE)/ o& \ _- R" W# Z
PROVINCE VARCHAR2(40 BYTE)& R% ?( B. X( E! w
数据可以根据自己的需要,插入一定量的测试数据
+ B4 E* D. X; V7 v5 F/ |oracle如何实现分页4 B: d0 \7 ?8 N4 F1 R0 \; p
2
( g) k# V& M$ ?7 K+ s' V查询下总共数据量
& p! a# h3 C( o( fselect count(*) from T_BASE_PROVINCE;) c6 }$ X% g6 w8 k ]( U7 }3 O" I
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数$ ^: U+ f; W) I
oracle如何实现分页* b6 y g* V. W* u/ i2 a" y
3
2 N0 J( S% R; [前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
8 V6 j, B6 \! |+ ]# Woracle如何实现分页+ B: X( W% R& L+ ^9 }
4
% s3 Y. i0 y5 q分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
8 |! u1 _8 W" yselect *
7 @/ a1 H! M- `$ Wfrom (select t.*, rownum rn, x( o/ f; ?; U1 c8 a* q
from (select *+ U" p. G X/ ^! O
from T_BASE_PROVINCE7 l0 U4 H( W6 b+ K0 A" d: C# |
order by id asc) t
; r, N/ W4 m' [* m- o' z where rownum <= 20)
# S+ r' n9 x% x% s, i' b Q! B, Lwhere rn > 10;* \# g6 G# }- o5 ?, \
oracle如何实现分页
. g( j' W3 i0 ~/ R, g2 O5
9 c8 h' G$ M% M, z" D1 u% U分页语句二:如果不需要排序,可以使用如下语句- Y: W9 w1 w$ g$ [4 I
select a1.*
- y4 W0 E# X# {1 d. J; w( u, Rfrom (select t.*,rownum rn
7 n: z$ ?3 \: R5 B2 i% K from T_BASE_PROVINCE t
$ x- a' ~, I3 }; ] where rownum <=20) a1 . n1 n$ O2 q: K2 c Z* ]
where rn >10;4 V8 {5 z0 s6 v
oracle如何实现分页
. ~- ?* X) V! Y- h! A# S6 V& H* m6
$ f( _, |. H# j+ D* \分页语句三:between and方式,性能没有上面的高,但写法简单
P# X2 ^% S3 v& `0 p( Jselect a1.* % k C: r1 }2 L% s. ~
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 . D- G7 h; l: \: |- J2 }; N
where rn between 11 and 20;+ Z! D8 P+ T( A! X B0 U
oracle如何实现分页% h' [# {& g" `! H" O$ E9 {# T1 N
7
2 ]* ]( M o0 O6 t2 n; j4 z通用分页格式,page是页码,size是每页显示条数& P$ F1 b/ K: ]' V) E" r# k* O
select * & \. K( j# l* R
from (select t.*, rownum rn
* U! V7 m! L, S# @; Q from (select * ~3 {5 `4 z2 a7 m3 b7 U
from T_BASE_PROVINCE# E# y( m: d- Y8 C
order by id asc) t
# M) b" p7 g/ f2 C! ?9 r$ G where rownum <= page*size)
( `5 e! b8 R, A# ~3 b; O% b1 m% ewhere rn > (page-1)*size;
5 o/ f2 J f+ P
+ q' d$ J, I% V% n- A8 D |
|