|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
- |! V. O/ [. I. o1 Q
6 P1 o9 s! }' T& k9 J' V
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
4 }% h0 }9 g' s5 ]$ e1 x11 e7 M" ?4 ~ O4 |
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
' z2 y: M, t7 W$ {+ rID NUMBER(11,0)
/ k* T; L( t$ ?/ I- i U( g5 v5 KPROVINCEID VARCHAR2(6 BYTE)" k. `3 b% M6 I8 V1 e" i; U
PROVINCE VARCHAR2(40 BYTE)0 Z' l& @: D) \, Z$ L, ]
数据可以根据自己的需要,插入一定量的测试数据' P2 B3 s, P- M
oracle如何实现分页+ |8 i5 x. S1 f9 x3 |" t8 C( n
29 Z9 Z. {6 e5 }4 q) R$ S- v i9 u
查询下总共数据量
% U: A7 \0 q# Y) Y7 M0 I. iselect count(*) from T_BASE_PROVINCE;
- b4 F' E- d$ i; C4 X' D- ]在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数. w1 c N2 `' J
oracle如何实现分页
0 V$ b- O# e' n# n* T% E) x3+ i/ o" G1 v0 v! Q
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
9 m/ N" K" v& s5 S+ T" G& Doracle如何实现分页
8 e6 S$ a' ^, V3 }- f' w2 d4
1 w# D( O2 F$ G3 G! _0 A: m3 o分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
4 V" Y) u' z6 Y/ aselect *
, w, M" [- k+ b; L0 _from (select t.*, rownum rn/ W6 u. r/ T# m$ X8 _
from (select *) @$ e. `8 n% ~, x+ [# R# o' x
from T_BASE_PROVINCE/ ~4 ~5 a k, Y8 a
order by id asc) t' H: X/ ^- S" a: H
where rownum <= 20)& R( U! q: S# Z8 D% D
where rn > 10;
! p4 A( M6 c3 U* l" B0 boracle如何实现分页
! w' x# G J4 l1 g U+ G5 m53 f; u- Z$ h; p' @0 o; G
分页语句二:如果不需要排序,可以使用如下语句
Y# O6 _* d: @! @: T5 @! fselect a1.*
, v! c* U* |2 k) N$ ?. [0 ~from (select t.*,rownum rn
5 {# ?& B, W; _5 R& b: P from T_BASE_PROVINCE t
2 ~( A" i9 L& K$ ]2 b! E2 L4 | where rownum <=20) a1
6 I) R, j' K# g7 [+ D# w A& o8 Twhere rn >10;
- f- h$ W- w: N! {/ w# moracle如何实现分页
$ ?; Z3 D% l5 X- H/ o* A6
( f) ^8 X' B3 `$ |) ~分页语句三:between and方式,性能没有上面的高,但写法简单3 A" S% n! @0 C- j+ a2 I
select a1.*
+ y% m( X9 n7 ]% d5 nfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1
7 ~6 c+ g6 a& P5 L [where rn between 11 and 20;5 k* z' M$ z- t" t/ u$ N' a# a% p. S
oracle如何实现分页( V- G0 }* u+ R$ }4 Q
7
; j% z' g" r2 U+ X: z6 k$ u& M0 E通用分页格式,page是页码,size是每页显示条数
& \9 M( V9 `: Y: `3 ^7 L9 [select *
! `3 e$ K D9 }, h K! L+ f+ dfrom (select t.*, rownum rn/ E# Y5 F( r1 P7 g2 |
from (select ** T/ f, v, F+ B1 x" F1 {- }2 ~' ] K
from T_BASE_PROVINCE
! | `+ @8 A8 U0 [ order by id asc) t
' ^5 h' J/ {: ~* r- d6 E* W' i where rownum <= page*size)* t$ E& u( P t' J
where rn > (page-1)*size;
3 h5 k* V6 O& b! b; n) u$ [
% |! L2 _+ l; |6 X( Q& F |
|