|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
. f1 H. m I2 d4 J/ l
$ {- v- Y4 ^) l4 b使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现0 n# O1 m4 p3 A2 B( p2 D& j0 D
1, o; M+ j: q. R2 }3 m1 u, ]
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下$ k* j& C1 H( g. P, \5 u F7 T
ID NUMBER(11,0)
4 O0 w% R L0 GPROVINCEID VARCHAR2(6 BYTE)) K2 c. f* k* { G, ?9 K0 y
PROVINCE VARCHAR2(40 BYTE)
1 S6 l& ?8 F7 |; ]6 j( f数据可以根据自己的需要,插入一定量的测试数据
: {' {5 p, X- Coracle如何实现分页
1 U! e0 U/ R5 I- a# T: K2
. {' r: h' K4 r4 A, Z* v查询下总共数据量4 h0 O: ~( j, z0 q! y+ ]1 i7 v0 p1 E
select count(*) from T_BASE_PROVINCE;
3 O8 a( H. U7 ], \2 n6 F/ r! n在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数, G$ i! R8 k. V# @/ b3 `
oracle如何实现分页
# Y% R& H; T0 `9 k3+ I: d5 g9 p& z4 b
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据& E9 o+ E$ h. K1 b
oracle如何实现分页
& x g6 C1 ^- o2 e" [4
- ^: p6 k* j7 S: g分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果! i8 b, A5 E/ R6 Z6 H
select *
* C6 X& W; S' L7 [2 q7 [from (select t.*, rownum rn$ D2 ]8 n* L4 Q9 Y$ L* {
from (select *
, [' R. W1 w( E f' c4 u/ h from T_BASE_PROVINCE5 }( s0 q& p4 A" `4 T
order by id asc) t
& ~9 { Z- E5 [1 r# u. Q1 R where rownum <= 20)" i( w7 i! {4 W) k
where rn > 10;
8 d0 p/ F7 s% h" f. }oracle如何实现分页; d4 D3 x9 E. p
5
# }# m5 i& o! X/ D9 r分页语句二:如果不需要排序,可以使用如下语句
' g) H/ Y) E9 F/ S9 Vselect a1.* / Q' g7 e. }, h! t! ?; H
from (select t.*,rownum rn
9 N8 V! ~: z: n T from T_BASE_PROVINCE t
' ~* `' K# ]: a% o* v where rownum <=20) a1
# E0 d* ]2 M {) b8 ~8 D4 wwhere rn >10;9 M3 T1 x/ {. [1 Q5 m, \
oracle如何实现分页6 v6 Q8 a# d' U; J+ A D' p
63 A/ V& M5 B% Z/ l+ t/ Z9 b
分页语句三:between and方式,性能没有上面的高,但写法简单
/ ]/ O$ s& H1 @* }) c. |& fselect a1.* + R0 P/ r9 a/ L& s. z
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 3 t9 q4 d* b4 c9 N
where rn between 11 and 20;
$ U1 o3 S1 y! horacle如何实现分页$ X6 r; V0 P5 K5 c. v" Q
7
/ h( q [6 D. P( ^: K通用分页格式,page是页码,size是每页显示条数
0 P' i3 X! H* ~8 gselect *
I$ Q+ `1 |# D/ p' a$ m" C6 Ffrom (select t.*, rownum rn, u" x! b" a: C$ C k/ N' V# C
from (select *
% E0 }5 f8 O! U3 U9 @ from T_BASE_PROVINCE5 i' m( ?4 L$ x1 C8 P ]
order by id asc) t/ S( T, [% @9 Z% \, E) ?7 o
where rownum <= page*size)
: l: A6 i1 t! {6 [& ]where rn > (page-1)*size;. w4 l ?6 W5 U" I+ s! X4 k
" @; Q! p* Z. g$ }7 C |
|