|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
8 |! K1 @1 I) i) I: i
( w# r! P( p' _# A7 V- U使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现9 z. U9 I* ~' F% t! z" b/ j2 {5 Z
1
. I/ }9 E+ k( }% P; b/ O) R2 \3 Q, g使用T_BASE_PROVINCE表作为测试演示使用,表字段如下6 ?, K, d4 O0 n) A# f8 c
ID NUMBER(11,0)* r, y( K' g$ s- {. l
PROVINCEID VARCHAR2(6 BYTE)" ?5 @$ V% |" D& R7 F
PROVINCE VARCHAR2(40 BYTE)
/ \9 |, a/ z( b' R& L数据可以根据自己的需要,插入一定量的测试数据
$ ]6 Q! m( x- S5 f. @" voracle如何实现分页
- M2 a! V: ^ q: v, e2
2 p- N) L9 P; {/ ~4 A查询下总共数据量- c* x' Y3 u( a0 M1 }
select count(*) from T_BASE_PROVINCE;/ F, m8 p) z/ F7 V& F9 L& `) s+ H
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
4 b' r; Q* o4 [' Moracle如何实现分页
# M5 y/ A- x& H- ?3* t" z+ J( g1 S& E! }2 y
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据8 {* l0 o' s1 j1 s8 R$ N4 ], S" y
oracle如何实现分页
: k! k8 W: P/ j' `5 g4
. L7 |' b) B i6 X. U5 J% G8 }5 N+ Q分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
$ h+ R: }2 Y0 Xselect * " F o2 Y# U6 G/ Y* E& ^
from (select t.*, rownum rn) @1 E, Z% P+ ?1 M+ f
from (select *
7 m/ ]0 c4 ^6 ?; l from T_BASE_PROVINCE& a, O0 }4 R3 K1 D' g
order by id asc) t7 D' W$ ^. q' I
where rownum <= 20)
$ h; \# y% O; z4 u# Q6 ]! k6 qwhere rn > 10;
% C) s$ ]! l( ]: \! f* F0 [, l" f0 Toracle如何实现分页3 b `& W5 Y" z' |
5" \6 Y% U0 x- P
分页语句二:如果不需要排序,可以使用如下语句
4 M( u, t+ K6 Y5 ]- X. oselect a1.* & ~2 h' {+ U8 v$ Y1 f2 B. [. i" O
from (select t.*,rownum rn 8 n+ c2 j3 }7 T1 Y# z
from T_BASE_PROVINCE t + a. w# D+ v# t1 L( b4 m( U4 d
where rownum <=20) a1 7 U( D, |; ^/ ?* `+ |8 g$ e
where rn >10;
M: {( [% b2 j- c9 w, _6 coracle如何实现分页
. k( ]0 S$ j, ~4 W. |6
/ B4 x+ {8 j& E) _分页语句三:between and方式,性能没有上面的高,但写法简单4 B& ~3 i; s( u: J! ] Q
select a1.*
! a9 ? v; t6 x) Y- ffrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 9 `0 H! h9 P- u' U6 Y
where rn between 11 and 20;/ j) X' h9 \: n' p; B( ]7 g
oracle如何实现分页
1 Q4 M" y2 \# Y3 V4 y6 M' H; d7
/ ^& K/ D' V, T" a9 y通用分页格式,page是页码,size是每页显示条数: w" i g* J- c% S: Z
select * 1 R; h; T v0 e3 R$ s
from (select t.*, rownum rn o' C! e# c: i) z# y
from (select *
4 o5 o" p+ @, Q" ~3 _ from T_BASE_PROVINCE9 n1 j/ j! ?+ }) c. q! Q) R% q
order by id asc) t
# _- l$ @4 [! l8 { where rownum <= page*size)
# J* R! P0 O1 W6 v$ |% Y& ?4 Y' s! Qwhere rn > (page-1)*size;
6 d$ V" _2 V9 n& t
) D6 w8 }! d( V0 R3 g5 l/ [( Y7 W% Y" I |
|