|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
8 b0 e0 }- u- Q1 j: \" ~9 j' C8 Z& R: U& O, B4 I8 `& O: z
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
( Y# \+ e+ u; Y" c/ z6 C! t, d ~. O1
6 h6 y$ H# F$ n& o) ~0 b使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
( I" C) [8 l* F/ [6 K# hID NUMBER(11,0)
4 P" j! c+ }, B) }PROVINCEID VARCHAR2(6 BYTE)8 n0 c0 x% p6 h+ C/ V
PROVINCE VARCHAR2(40 BYTE)5 v) c8 } Z9 L/ {
数据可以根据自己的需要,插入一定量的测试数据. X" J; {0 }7 p" r9 C* ^
oracle如何实现分页
+ H |" u7 T* @% P, j/ v29 x/ @% o* F, r/ A/ j
查询下总共数据量0 i9 ~5 M9 O" S! I. j- I
select count(*) from T_BASE_PROVINCE;
; N: W8 j# J: c在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
q% w: a2 V: w A$ N* x+ [. R: Horacle如何实现分页" S- c s1 M3 h3 U) T g& D
3
1 @7 _( _3 Z: d6 w* g5 }$ _' v前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
9 X$ T* o7 V; {, f6 d6 xoracle如何实现分页
9 ~' C; p! f5 a2 V2 f) ^: G4! i' m) S9 I+ P4 j3 f
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
$ p8 A. F) K( s8 K- }% z5 \select *
8 [ G& s+ Z' q. ffrom (select t.*, rownum rn6 B" t, @( ~6 m/ N8 H% H& a5 r+ k
from (select *
4 Y8 e5 p6 p* d/ ?5 f" m1 X' T from T_BASE_PROVINCE1 Q% e6 m/ x! x6 Z
order by id asc) t: ]. n- p6 X) m) @* l; e, W
where rownum <= 20)% J l! G# P7 j% h6 p, C0 J' o4 x2 w4 p
where rn > 10;2 v* k \0 q$ o& t
oracle如何实现分页6 f" R' S$ U2 J$ k6 o
5. E4 e. D# w, T, E
分页语句二:如果不需要排序,可以使用如下语句
, i' C% u$ K- w& b+ Eselect a1.* # O* `' e. C8 m8 T" n
from (select t.*,rownum rn 9 S) b _: Y! U* |8 t( r. w6 O" q
from T_BASE_PROVINCE t 2 u( a. u! w3 K3 ~3 P" I# n6 h
where rownum <=20) a1 & m6 ~/ d! I/ Y% Y3 h6 I% v) Q
where rn >10;
) y' v) @" d voracle如何实现分页) l2 j7 J1 q" ~, ]
6
. D1 x( B+ t! x- ^分页语句三:between and方式,性能没有上面的高,但写法简单 J4 {4 v/ m: o L
select a1.*
+ e3 j# R( ^7 [' M# Xfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 h! n# j9 U2 K3 o l0 `/ |0 q0 ]2 c
where rn between 11 and 20;
0 L# a& [9 b8 k' {8 m2 M6 H" toracle如何实现分页' Z0 O7 K- m5 [
71 o5 M8 k4 y# O4 o" \
通用分页格式,page是页码,size是每页显示条数
7 S$ ~; w Q" s S7 jselect * 3 M2 C! y+ d& u2 z8 A
from (select t.*, rownum rn: R$ f' q% k8 n
from (select *
& B `+ F! ~4 K t) Q9 [ from T_BASE_PROVINCE
' P- Y9 y" |" ^# p: m) J# z# ]7 I order by id asc) t
; A: f3 k% z$ P* d. Z where rownum <= page*size)% _& U$ j7 k9 E N# b- r1 j6 s
where rn > (page-1)*size;' X) X) k- S: B* Y. o3 M$ f
2 x% m1 }% T: J! Z$ I+ J5 q |
|