|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
3 V) ]5 t. J+ i I6 S% h
" ]. U! ]/ d" V) m% C) M* H0 N使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现; N" ~$ w0 u& r
1
7 S0 Q% d7 S! `7 c! ]# ~7 B使用T_BASE_PROVINCE表作为测试演示使用,表字段如下+ s" }( r. L E* w+ \
ID NUMBER(11,0)* _8 v- }, X" `' x0 w7 P6 M
PROVINCEID VARCHAR2(6 BYTE)
" _5 q2 \$ k( o& a5 O/ ?PROVINCE VARCHAR2(40 BYTE)8 w" I6 N- K3 _5 u' s0 \
数据可以根据自己的需要,插入一定量的测试数据
9 U8 V" [4 h1 F- _9 C. t& roracle如何实现分页6 l; \; \" E# v4 o" I# E
2
. M5 L) s2 U1 s& q* c查询下总共数据量
' N, W, E. x3 B/ P g, c G; Xselect count(*) from T_BASE_PROVINCE;
- k7 l9 }' J6 ?( D$ N3 ^在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数& D, p1 d( {5 c# ]( b- s/ V8 u
oracle如何实现分页9 e, F4 K" E0 {. ]
3
0 t( S3 u4 `9 Q, H' }! e$ w1 [* l前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
/ K2 C) c- ^# t& U2 A% v# ^, X, eoracle如何实现分页! _! y7 E9 x9 F% g3 V" L7 _3 y; I0 e% l
40 D$ \, @8 t3 J* I
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
: U9 e6 s0 ^# G4 _select *
2 I: B1 R: I1 ifrom (select t.*, rownum rn) I9 B8 n C* Z9 g; {
from (select *8 X& t b$ ` B+ ?5 ]. V
from T_BASE_PROVINCE
9 X: i& B* P% G order by id asc) t4 U0 Z: p) h" I; ^% ]5 o% D
where rownum <= 20)* \- }/ J' P/ F! f: _4 W( p
where rn > 10;
1 m2 B$ f7 | z6 ]2 poracle如何实现分页' n5 s: ~4 \/ U; p* _$ f
59 @! o, F# w0 `$ `3 a
分页语句二:如果不需要排序,可以使用如下语句
: I, X2 P7 l! W1 Xselect a1.* & F% M8 x2 i; K# z4 I' l# h
from (select t.*,rownum rn 3 ^& s: P- n$ i6 \' |; j9 {! `! i, x g8 i# h
from T_BASE_PROVINCE t
' z, F/ o; P8 p/ {- Q! S, y0 d: A where rownum <=20) a1 + b2 I0 |1 t* R; Q8 b6 a* t: X
where rn >10;
~! M0 o4 t, E/ w5 V" { uoracle如何实现分页
, q" v8 j/ {8 `! x. L6
0 c1 Q% H" c8 V' U9 c4 z% W2 A分页语句三:between and方式,性能没有上面的高,但写法简单
1 `& M$ p8 R' @8 Z- ~select a1.* ; _' ^- ?. Q5 A
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
4 [+ M7 @# Q4 c" Zwhere rn between 11 and 20;" \- `: \/ j( P' [ ]# |( J
oracle如何实现分页/ Z5 T8 S) Z: N5 x
75 d- Z& S. ]' f) R9 s( n
通用分页格式,page是页码,size是每页显示条数
# H. i- K8 x# G6 [3 C$ Dselect *
5 b3 @- _* ^- h jfrom (select t.*, rownum rn
$ @4 n- a: I. X from (select *
& J9 N, I6 f' o, p: @* A$ }, v from T_BASE_PROVINCE
2 i7 G$ d9 {: k9 ]( ]- `( _; n order by id asc) t
$ x; H1 F2 |; J1 C! d where rownum <= page*size)4 x6 O1 M( X8 C& f3 _
where rn > (page-1)*size;2 i# C- u( ~! M5 V1 u
1 Q* h: k& G8 F# [( x
|
|