|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
4 R0 y% G1 w# v6 V! |8 j3 d8 d2 |: X' Z4 ~7 c
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现; Q; d" L- M8 D/ B6 m5 v& n
1' L% u0 V& p) p, f$ T _
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下( r3 \' |9 d8 Y$ |# u
ID NUMBER(11,0)
/ q8 V4 ]2 }% ?PROVINCEID VARCHAR2(6 BYTE)1 X% `% Z2 r4 v2 ^$ k
PROVINCE VARCHAR2(40 BYTE)% `5 ~0 M" n g- N
数据可以根据自己的需要,插入一定量的测试数据- ]" I, z0 V9 x* U. V |/ e
oracle如何实现分页; L) J* s: I8 j$ ^
2
g! D" N& ~# y) L7 ?" [查询下总共数据量
5 l. ~) r; E1 @select count(*) from T_BASE_PROVINCE;
A1 |* C. t7 f8 G6 k7 m在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
; A7 I- v- G: D) I! s; y. uoracle如何实现分页0 s0 y) Z9 \: G3 c8 g' X9 V& _
32 i' p6 D: h# w# t2 C7 o
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
I v9 Y! J8 B3 h, d7 loracle如何实现分页
4 R, ^( j6 n) p/ a7 t4) y* @0 D1 e. {; W$ x9 k
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果' r# e4 G& h2 `) v
select *
* N* M7 Z0 B/ S; t. Afrom (select t.*, rownum rn
4 [% w, A5 R9 \ from (select *
& ]4 B- T, Y* Q8 \. `& } from T_BASE_PROVINCE
8 Z, j3 p& Z3 B8 `- f4 m$ ?. \ order by id asc) t
5 v: r! i0 z: `7 ~& A2 |; D0 i where rownum <= 20)( ~$ L! R+ G& t
where rn > 10;' S, ?3 S0 E* v1 {# R1 R
oracle如何实现分页
, m+ d% _1 w1 q- L5
7 f7 u( Z0 d( f ]2 [8 ~分页语句二:如果不需要排序,可以使用如下语句4 l& C7 ~2 q/ @5 W/ K, z
select a1.*
, ?8 S s1 \1 K$ k/ Rfrom (select t.*,rownum rn / [: s9 E1 E3 h" q q/ u5 |
from T_BASE_PROVINCE t |) `5 \& X6 j7 J% t2 g
where rownum <=20) a1
# Z( h* Z+ N. S0 o7 owhere rn >10;) J ~' c. s! X8 H
oracle如何实现分页% g; {, T, O. n+ g' D
6* \1 t; t' f9 g; X2 [
分页语句三:between and方式,性能没有上面的高,但写法简单
3 x+ p7 j0 W1 v# B: l& h0 eselect a1.*
& \+ h6 e. ]" ~3 n% bfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1
# e! K) _0 u; G$ n. j( N: f# Owhere rn between 11 and 20;
, K6 }3 j+ j. \+ R3 m8 Horacle如何实现分页# K; S6 B& u$ d1 `: v: S6 g; l
7% R& K( B+ U L& H3 a9 h
通用分页格式,page是页码,size是每页显示条数5 L d0 K2 J3 P P \. R, E: L
select *
3 ~1 ?) V% K* R% A7 N+ ofrom (select t.*, rownum rn+ R: }% ~2 s/ q! j& D' Y
from (select *, `; _2 a5 x5 H& _$ c
from T_BASE_PROVINCE( P% l' ~8 a6 u' U7 g, s ?. d
order by id asc) t3 H: x' V" V u# ~$ X U4 D" n
where rownum <= page*size)
# a+ T( P+ E5 f- }where rn > (page-1)*size;
2 S( _+ S8 p- _; U, r3 q, g [$ L; o9 A
|
|