|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
0 ^; i# s) c9 z3 a3 o1 P$ h
2 [. w! V K( o" {4 F1 G0 t# O使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
1 J: m1 Q6 s6 v; y) V1/ v) _! M6 M {, |7 K: t, W
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
! D7 f9 M- t" {; w4 J7 W' Y9 LID NUMBER(11,0)
0 Z! V" ^) N T0 h0 c3 WPROVINCEID VARCHAR2(6 BYTE)
0 W4 g f: W ]3 W, M% MPROVINCE VARCHAR2(40 BYTE)
. |3 n5 F5 S3 M/ P: |# N+ q数据可以根据自己的需要,插入一定量的测试数据2 a: V% f I8 ]) {3 a& |
oracle如何实现分页4 v+ n! @1 c: t9 |( \
2
+ s9 f- n1 L- M1 T: S5 R( m8 I查询下总共数据量& f/ W% \5 p4 H+ X" U/ U
select count(*) from T_BASE_PROVINCE;3 G. s4 q: J( h8 \7 a2 e: m7 V
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
* J a# h, L* V% coracle如何实现分页 x) @6 J4 i5 y5 m% A! p" J
3- q6 l7 M' f! a2 z
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据# g3 ?! N! Z8 B. H4 ^; T& ^
oracle如何实现分页
4 u! @6 O% f A, Q8 y2 m: M4
9 `6 G" o$ f$ M1 {分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果' w1 {- v! m& ^, s8 |' |/ x' v
select * + T5 `$ K% K. K8 y& q
from (select t.*, rownum rn, s3 _# g2 e3 U Z6 \, `* ?
from (select *' @9 @( Q: a- @- {, }
from T_BASE_PROVINCE; r4 P8 `. b1 h$ Y" U
order by id asc) t9 j. U% H7 C% B n8 ^- K2 h% H5 t
where rownum <= 20)9 n6 y6 `8 j9 y, F1 h
where rn > 10;# Z- |( `: N" D: ?) l0 x
oracle如何实现分页 t7 q" R' w$ h
5
; ~2 G6 p3 g a1 K* \- u分页语句二:如果不需要排序,可以使用如下语句( s6 u! J0 { k
select a1.* + P; Y: A( R# k0 o4 S" b; o
from (select t.*,rownum rn
$ k/ x6 c2 o) }; y. z! q; D from T_BASE_PROVINCE t . e* @% j7 s" v b6 X8 a. }* g
where rownum <=20) a1 6 R1 L( L7 G' \& O
where rn >10;
6 E7 z) f* ^2 J% q- Ioracle如何实现分页
) `+ R3 Q& H( i/ } h6
# q% o0 c. R9 v5 m7 {分页语句三:between and方式,性能没有上面的高,但写法简单
8 n; y# b. O: z4 }6 t2 Aselect a1.* * c1 }4 X0 G' }, g" ^0 ^
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
, [* Q& D% U) d8 ~7 ~! D4 gwhere rn between 11 and 20;0 T# l1 y; G# P* b' Q2 M
oracle如何实现分页
) c# X. m2 f/ [9 V& Q7
# Z, r# R/ d# P' o" j4 ]" z# K- U% w通用分页格式,page是页码,size是每页显示条数0 \. M: g" M8 P/ X# o- |
select * ' ]' {! Y# _4 q; o. S2 s
from (select t.*, rownum rn# j% P0 Q2 y) U1 W
from (select * J( F0 U- ^3 _) o
from T_BASE_PROVINCE( H4 [# @/ |/ `8 a, d2 T0 }$ c8 j c$ M
order by id asc) t# b8 ^: i* t( Z, F( Z+ H
where rownum <= page*size)
W( r2 A# e# S+ j5 c" n" M/ Ywhere rn > (page-1)*size;
/ v) t5 T4 W3 ~ d3 x# U- ~
; x6 c- C& k! n7 r' [% l Z s |
|