|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
6 O4 X/ x! f3 F: `3 w" W
; |: v; j: R0 r2 E! F+ [/ `# K使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现$ ~5 _9 a. \, \- j8 n; Z: n! k
13 a: }2 f) _ _5 D, N7 m8 D8 Y' z- L
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
# J; l# p6 I$ l4 W8 vID NUMBER(11,0): p5 |/ g5 h9 r1 s% I
PROVINCEID VARCHAR2(6 BYTE)* ~5 W+ p9 ~2 |$ H9 r' Q, |
PROVINCE VARCHAR2(40 BYTE)3 j& L1 k1 G) b0 q, r" G( l
数据可以根据自己的需要,插入一定量的测试数据
! \% S* {: f3 D7 coracle如何实现分页
; t* V: b" a: M) Y2
) r9 U" T' ?! P8 i5 y) ]查询下总共数据量+ u' |$ m" D+ F) w3 Y/ j+ z
select count(*) from T_BASE_PROVINCE;$ j6 s9 y5 l" P5 w* A7 M, C
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数5 X- T8 ^; o3 _6 X% F
oracle如何实现分页4 W8 o' R% x" w4 V, A$ |
3
) ?2 h% g* Y% w+ x前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
* d! R" i( S: t( X5 C }& Xoracle如何实现分页& q8 `. p6 }- p) O
4% q7 t, A& i0 W" o, F& N
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
, M# f3 T+ }7 N& @$ Xselect *
W6 l2 X; O% J! B) \" `' k+ Dfrom (select t.*, rownum rn& o6 F& ]8 u- {* a/ m% b0 l9 i
from (select *
% B; O# Z1 w6 B @0 v from T_BASE_PROVINCE1 ^2 v- A2 c) g& a
order by id asc) t
/ e" L" D5 [4 ^- `* |+ f where rownum <= 20)
* }1 j9 y9 V0 t9 O0 {where rn > 10;
5 O. w) U2 i9 j6 J% boracle如何实现分页
- f G+ z! e: b/ o) ~- S5
/ \$ C4 g- p+ _( l C2 K" ~: S; l& {分页语句二:如果不需要排序,可以使用如下语句
a4 {8 D( l8 v9 Iselect a1.*
2 [! [7 ~. P. u1 Rfrom (select t.*,rownum rn
* B# H0 B& c- w: ~ from T_BASE_PROVINCE t & B( l; P! \; |. f' B8 R0 K
where rownum <=20) a1
' y! r* d" I4 \6 J% o1 E- {% dwhere rn >10;3 j2 y- c* J4 ?" x
oracle如何实现分页( o* N$ @* |4 Z! L2 m
6
3 d3 {/ h4 o% ?7 ~分页语句三:between and方式,性能没有上面的高,但写法简单/ J2 n+ {' i( f6 K: f( z
select a1.* ; I+ C* Q7 I' q+ X# Y
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
4 Y/ o* E" o6 X, @4 Nwhere rn between 11 and 20;
2 X/ o5 k" P' J1 c# T6 J1 woracle如何实现分页' ?1 c( M/ ^2 u4 T1 s
7 s9 u. y# G( \+ x
通用分页格式,page是页码,size是每页显示条数& b# `9 l5 b& }. j% | A6 V
select * X/ \2 I9 K; c$ U
from (select t.*, rownum rn+ M Y; _4 l* [$ W8 K3 \, N( R" l
from (select *( f+ R6 _$ i9 V B3 K
from T_BASE_PROVINCE! c( \, t( c! \. H. P
order by id asc) t
: C. ]% s# {! B8 ]2 h% X where rownum <= page*size)- m" ]1 T& v+ W) \2 V. x/ v" L
where rn > (page-1)*size;8 @ [9 [" J3 M) E( C
# a1 D, h6 @3 w" Z$ O% [
|
|