|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
" H5 H! m: c9 q& }5 K& S+ U' t) Q7 x- I; {) j3 H
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
+ a6 A: y- D/ d# W* }7 a15 y- Q5 \ q7 f W8 r9 ~
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下/ l6 @" V" L7 I
ID NUMBER(11,0)3 M2 h, {7 I2 L, B: i N
PROVINCEID VARCHAR2(6 BYTE)
, u) ~& @# ^% o1 v9 ?" xPROVINCE VARCHAR2(40 BYTE): k" Y/ F& p3 T- k, e9 k: H" V' A2 T
数据可以根据自己的需要,插入一定量的测试数据
N2 D8 b5 c. Joracle如何实现分页+ W1 ?. K# D! S! g' J5 m
2
' J" `, i+ H( q7 M6 l4 s. S: |查询下总共数据量* U6 j3 U. n4 s: n; C0 \; H
select count(*) from T_BASE_PROVINCE;
7 v8 J' k2 ^" k$ }在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数+ H: b: O1 G# C/ E
oracle如何实现分页
' J& U' t& r3 d! C3, \% L0 o# e3 r3 ?( @4 n) G; _8 O
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据3 ^0 q; @' P9 x; B1 n; K5 n' O
oracle如何实现分页. u8 `$ g& S! M) x! a
4, h* j3 j. r+ F+ q E5 U. Z
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
3 H; F1 V: D2 L$ A+ D- ?& |select *
0 _0 t# f5 B. z& `- Afrom (select t.*, rownum rn
" Y9 y/ b' d* ~& x from (select *
8 N- m% \' P- @1 Q2 b0 Q) ?; I& M from T_BASE_PROVINCE2 P2 ^/ J/ z% g2 H& D, Y
order by id asc) t
. Y- B8 a. v; R% O where rownum <= 20)
" Q b% X, a" ywhere rn > 10;. `) c' t3 _: E+ U
oracle如何实现分页
! R ]8 z* k7 f! U! i1 ^5
# H0 a9 u! Z' c分页语句二:如果不需要排序,可以使用如下语句
' n1 v4 L! V. n3 h+ uselect a1.* 4 N7 a" P1 g" R; v
from (select t.*,rownum rn B# H7 W6 A/ a4 m3 @) Y: Z
from T_BASE_PROVINCE t 9 h; s7 N: o3 Y7 ^: S: Z$ }# n
where rownum <=20) a1
P N7 A6 D# |7 D$ Nwhere rn >10;
, F$ s) y( _4 Q3 g: yoracle如何实现分页
0 f% k4 e1 b6 ]1 S2 u& @ d6 ]9 `: q/ b. n- J3 ^
分页语句三:between and方式,性能没有上面的高,但写法简单
6 G7 Y5 M m0 f7 X: Hselect a1.* 1 h3 C0 v# l9 s
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 3 B: T; j0 Q1 `# s7 s5 }7 Y3 s
where rn between 11 and 20;9 f% @4 I ?: p/ C- ~3 a. x/ a
oracle如何实现分页
( |/ S5 H8 V- w. x, U C: J) F7. B2 \. O3 H4 V& |% I% I% s6 u
通用分页格式,page是页码,size是每页显示条数% b8 L, J& C- h6 w0 |
select * * ^: T, H8 L0 x1 e$ a; Z+ Z- r: S
from (select t.*, rownum rn
" \3 C" Y% V3 F$ a; w! [! }/ j K% Y from (select *
4 _- K; o' @# W" A% i/ B from T_BASE_PROVINCE( N9 a o$ {% I8 S6 ]7 E! [6 o+ w$ b
order by id asc) t
: s% a) a5 U5 B7 g- \1 Y where rownum <= page*size), `% D& }4 i) N8 ^+ P
where rn > (page-1)*size;
6 x1 D# c& i5 a0 o, x H( J' j9 b2 U; J" \5 _- r
|
|