|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
: [) G/ H7 X3 g" ?. o% D1 y; p# d0 n0 C) U. P6 r
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现, I* a9 e$ _% x/ ^) _( }
1
9 L) M e6 `% a2 o: I& C使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
. n7 v' h& Q( ^- n" CID NUMBER(11,0)9 I' A7 X) V& f; c4 w( V3 G
PROVINCEID VARCHAR2(6 BYTE)
0 e; C, q( e+ p g) X } cPROVINCE VARCHAR2(40 BYTE)4 H3 b8 O% D4 G! u0 ?& B( O+ _; R! y
数据可以根据自己的需要,插入一定量的测试数据
" n* R7 y. z7 `- v, V3 Eoracle如何实现分页
/ ^6 s, p. k% h5 x! s. b25 g9 m$ g' h0 {" _% [9 a5 G
查询下总共数据量" Y6 `* `4 {& {* z( P) C) p
select count(*) from T_BASE_PROVINCE;
8 a3 a0 Y( E: z0 U* y( u在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数5 ~. s4 \8 [3 E. o/ i0 F
oracle如何实现分页
8 E2 @( ] x( a3 F, w3
" {) G# L3 ]/ D: V前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
. S( d8 V; `, k& i" @. u' d3 |oracle如何实现分页 q, `6 Y- e" C5 h4 r
4& [1 v3 V* \- M! N
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果+ }# _( y$ @; q9 S4 k7 T) y6 L' ^
select * % u$ M* {+ G: q, B0 T0 p
from (select t.*, rownum rn
0 S$ p6 S* f% s2 K from (select *
& H5 t( O! O$ S3 v5 Q! y8 f5 D1 W. f from T_BASE_PROVINCE
; B0 w4 a9 {- w, v$ e5 _ order by id asc) t; L5 f5 Z% R2 U% T! E
where rownum <= 20)
g( g4 l1 Z7 f6 R- c4 Nwhere rn > 10;
' Z X; H) b' g( r" X- j+ boracle如何实现分页# R3 m) O* |6 Q# G
5+ T: T+ v! v z m+ x3 H9 e
分页语句二:如果不需要排序,可以使用如下语句% u0 R% C% V- Y6 \4 `( l3 h
select a1.* 4 h+ m; Q0 O0 ^& A( r
from (select t.*,rownum rn $ f5 n# l- B9 g0 s2 v/ s+ k! a; Y
from T_BASE_PROVINCE t
, B8 p9 M5 `' I& B; v! i1 H( u where rownum <=20) a1 4 Z7 w; ]1 p6 C; n- C! Q* C3 H
where rn >10;
) Y3 @( P- k: ~+ D, j3 Boracle如何实现分页) M& C. J1 b7 [- m& ^
6
) S: e( L. Z4 O分页语句三:between and方式,性能没有上面的高,但写法简单
3 G/ h) Y- o0 o7 U+ D/ Bselect a1.* " ?8 f" N; E( N7 M9 @! z7 I$ j; v" M
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 8 V- ~, u+ l' c
where rn between 11 and 20;
/ U5 A/ {$ k# @! B( N2 @5 Xoracle如何实现分页
# N5 j- G# v! R. i. _9 J4 e7# n; N4 w2 l1 l& `
通用分页格式,page是页码,size是每页显示条数( p; g, Y f7 d0 D. b: z1 E
select * " G7 l- ]+ U, G3 k e* B
from (select t.*, rownum rn
, Z5 R! o }* {7 l1 k0 X2 i @: s from (select *: `( a4 j9 E9 g+ H' A8 D+ v2 U0 s! ]
from T_BASE_PROVINCE% O8 ]7 c D# I4 n- T
order by id asc) t
0 n; \1 v* H( g where rownum <= page*size)" Z3 q" ]) d0 ]" N2 L" }4 y
where rn > (page-1)*size;2 ]$ l' H. H, x' M0 M
% ]+ W7 {, S1 U' h9 S" B* z |
|