|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
6 q( o9 G* h# {9 w2 l. e8 `
& _: _ _5 V; |8 `使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现9 V- E( M& v6 K, p: H7 t7 P+ `, p% V) P
1
) ]/ ^ S7 f3 A6 W0 V5 K使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
1 Y% x3 n- r0 A5 SID NUMBER(11,0); K5 l7 L1 ?! A; P- b0 ?
PROVINCEID VARCHAR2(6 BYTE)/ T+ Y0 L& Q, Q( z( |( J5 g
PROVINCE VARCHAR2(40 BYTE)5 M' k7 v {( B" G
数据可以根据自己的需要,插入一定量的测试数据
; p; c( m! F- Xoracle如何实现分页4 a- {6 z* }+ k% k4 Z5 h5 [
2% R, y* `0 A; z4 ^
查询下总共数据量
9 D, y+ m9 o: I" Uselect count(*) from T_BASE_PROVINCE;
- g& s0 Q5 o7 l, }9 W$ x, x W在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
! \$ u. S) L" w8 g; a6 y- F2 Zoracle如何实现分页& t0 I0 e3 {; K/ l! l4 ?3 R4 Z
3
6 r* U8 V8 J& J; A" P) o前面的测试数据初始化完成之后,查询前20条大概有什么样的数据' O& [2 ^' O& Q* a6 ~; F4 p
oracle如何实现分页7 ?/ x: b& v1 ?5 i" f
4# A. L# Q: s- |' `
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果7 X4 X" d7 G0 G$ B9 p- [/ e& Q
select * , g5 I+ v9 W2 r+ M+ v$ G
from (select t.*, rownum rn
, p4 Z" e% b2 G8 Z2 k, s" { from (select *3 d' Z6 ^, Z8 t" |
from T_BASE_PROVINCE
7 O1 M6 Z {+ G4 W order by id asc) t, h1 G% e* N3 f! u- {; l) Z
where rownum <= 20)
, l3 E1 }+ \9 y3 P* L2 l* _" jwhere rn > 10;
% @) J; l" i' [' d+ t8 Boracle如何实现分页
+ {( s/ f4 h& I5" n9 X8 Y7 X3 p, h9 B
分页语句二:如果不需要排序,可以使用如下语句
: ^9 F5 v' U! { hselect a1.*
2 U; s+ L3 e/ o) v( ^from (select t.*,rownum rn $ p; x6 f3 T9 r! P
from T_BASE_PROVINCE t ( H7 H4 Q/ D. l, a U* [. K6 ?
where rownum <=20) a1
! D% }$ d! [$ |" E7 ]) L8 \where rn >10;
{! [9 M" D6 n" _1 k' ]! Xoracle如何实现分页
* k- D Q, N. D3 A% h- h' n2 `64 K/ @ d9 ^$ ?& r" V( t) }$ L
分页语句三:between and方式,性能没有上面的高,但写法简单- U8 }/ }( v) ^! W* t g5 k7 M
select a1.*
+ D! w) f* U. \4 A, mfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1
0 F) C+ w+ H+ {+ j& Q# W. [" ywhere rn between 11 and 20;2 }' Z5 x6 R( L- ^& Z
oracle如何实现分页
. E5 I* G* V2 ~0 t8 ]$ B7% y7 e8 p$ |. y& l" j& n- L3 }8 d
通用分页格式,page是页码,size是每页显示条数
6 t! D- y6 e8 l1 I4 }* H+ [select *
) q! d3 o8 v3 V) @! V$ I$ zfrom (select t.*, rownum rn
6 N6 D1 F! A; @. ~1 p" | from (select *
9 J% ?$ [5 K. j from T_BASE_PROVINCE5 D, h6 ?/ B0 _; W/ B' G4 Y
order by id asc) t6 P% ^# e5 C+ x3 a
where rownum <= page*size)
* w2 P4 g2 {9 @; }where rn > (page-1)*size;
( `! A' H7 i' a0 z. O5 N8 H$ e q- H# a [9 D! a
|
|