|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
C& \/ z9 `! h% l
0 x8 C! x4 B! z+ U$ p+ F使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现+ K3 {5 z; M) i) u+ f
15 J1 R& M! k( O- A8 O
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下 n) T( P: \5 p6 q# ~. m
ID NUMBER(11,0)$ R- r4 h$ B1 _+ q
PROVINCEID VARCHAR2(6 BYTE)
+ L6 k2 ~! P- \7 S# PPROVINCE VARCHAR2(40 BYTE)
8 l( J+ J6 d- Z( }8 K: M6 D数据可以根据自己的需要,插入一定量的测试数据7 i F: ]9 m" f' {- G3 w* e; f
oracle如何实现分页
" ?" I8 z) V# {5 }5 I2! ]9 P! }4 B- ?: ~# ]
查询下总共数据量* P2 d+ b( s8 ]7 U( I. {
select count(*) from T_BASE_PROVINCE;
8 L Y5 K: F3 L/ k# x在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数2 G' p. j9 ~* k3 P7 ~+ f9 A8 O' Y
oracle如何实现分页
6 \0 g6 B1 `# v0 u3: Y+ \6 @; C1 R8 L4 O: s
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据) a/ H3 I% m; e
oracle如何实现分页% u3 a6 ? N j. X, a# s" s
43 A8 K; h" D" Y. E
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
, m' I1 O/ h! R4 E, _5 ]select *
$ p! ]3 N/ W7 \8 H( i Vfrom (select t.*, rownum rn( a- D" o: Y3 Y& h* C
from (select *
8 G: K" n8 _3 ~( {- W+ M from T_BASE_PROVINCE4 u$ g9 X6 o/ Y8 M- Q
order by id asc) t! S* V: v* X9 ?/ ^" @
where rownum <= 20)
1 H a" q" ~' h* S1 owhere rn > 10; Y+ X- B' L* V6 e
oracle如何实现分页
! `" r! _/ ^' Z: }% ^( s59 V4 z u4 [& l6 a) J
分页语句二:如果不需要排序,可以使用如下语句
8 Y& s+ g0 U1 a8 j0 bselect a1.*
; f, m% S) n* |# Wfrom (select t.*,rownum rn
0 [* m5 R% T7 E& I9 b B from T_BASE_PROVINCE t 8 o' f Y, _% Y4 o, n# r$ i9 K q
where rownum <=20) a1
; @1 v0 J3 \2 H' Mwhere rn >10;
! v! U8 _/ a) }. F2 p& ?oracle如何实现分页
6 ^( G, ^# z& @3 W5 t6" ~8 T) x; ?1 y/ }- ?
分页语句三:between and方式,性能没有上面的高,但写法简单& d, U& `5 ]; B( ]1 d8 X4 D7 c
select a1.* ; Z9 I. t0 A: X* d) u* {4 T9 u6 |# @3 J
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 * i9 Z$ P8 J7 ~: I1 [
where rn between 11 and 20;: z1 `- u# u% t$ z& M+ f
oracle如何实现分页
C) H0 m4 A( ^) k79 y4 A+ U/ ?/ M- A2 u
通用分页格式,page是页码,size是每页显示条数
; w: V# ~. c- q. x# `select *
$ u: F( T' j: w W9 x7 j. z+ Efrom (select t.*, rownum rn& } Y# D1 F$ g' \; ^
from (select *- }1 {% Z+ k8 Z
from T_BASE_PROVINCE/ F5 v+ T& G" B
order by id asc) t; P/ i, E4 M& }& J3 p' K
where rownum <= page*size)4 I/ F1 t. ~$ i# S B
where rn > (page-1)*size;
' x: a3 F& b% J1 X/ I0 `" F: m: x" z1 J& K! R/ i0 Y
|
|