|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
x
2 X) J( @' t6 y7 l, B
a2 w5 L* K& V9 ] ~
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
e# X" @7 Z' F& d$ B! b1& |! t0 |0 K" L: J2 Q w9 Y
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
- u$ V3 P% j8 O9 `$ r! j2 G* S# [ID NUMBER(11,0)/ F7 |. S. ?3 b
PROVINCEID VARCHAR2(6 BYTE)/ b1 K% M, i' K: B7 J
PROVINCE VARCHAR2(40 BYTE)1 P" M0 E# o6 G4 p
数据可以根据自己的需要,插入一定量的测试数据
" S# u8 i# @1 T% l2 j6 G* F) z2 ^$ \oracle如何实现分页
( ~6 O( ~1 o! k2 T, n8 l `2. v4 ?6 g0 H1 R
查询下总共数据量
( U5 m8 t ^ z6 @2 v8 y2 ~select count(*) from T_BASE_PROVINCE;
2 x# L( f/ ~. h4 e" Q在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数, z+ ~! D/ f+ q
oracle如何实现分页
, p. x' q' o2 H1 k2 [; k3
( h7 Q" f2 g$ X+ e& [8 Z/ d前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
. E/ ]# P, r4 F6 [$ Goracle如何实现分页
% r, }6 Q" K% ~& z3 `% @46 t/ t7 m! I# M8 I5 M
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
8 s' _9 S' R6 Dselect * : Y0 J- M3 }8 u# {$ p. ~
from (select t.*, rownum rn
/ x- A; q/ @! N/ i; X, e6 N from (select *5 W% p. W R1 z0 K/ U6 ]* |
from T_BASE_PROVINCE: H6 a& j G' T0 u$ T8 g
order by id asc) t; V% a! F5 s1 g. n
where rownum <= 20)9 C k& o; i, d) @7 Q$ k) t6 ?
where rn > 10;) h7 C+ ~# a+ }1 k* z" M2 f
oracle如何实现分页+ W2 h5 }. M! U4 x% n3 T2 }. U
51 W, @+ y2 e4 |
分页语句二:如果不需要排序,可以使用如下语句# k' i3 b4 g9 x5 A% D
select a1.* 4 a, L2 X1 i% \: h9 f, L) `
from (select t.*,rownum rn # ?# [" \2 t2 A; q$ Q6 \" g: A
from T_BASE_PROVINCE t 2 c' a* H7 R5 s3 U5 l9 K
where rownum <=20) a1 6 M. t; {# Z8 q. B* g$ ?3 d
where rn >10;0 f2 Y! y( z( o% q2 Z, \
oracle如何实现分页; O5 M( k5 I* C, y8 S! {# y$ y, j/ [
6
. B! N W Q. l# H分页语句三:between and方式,性能没有上面的高,但写法简单0 s0 H5 q K& |
select a1.*
! C# d- z8 N8 B; ffrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1
# A- { y/ \; Swhere rn between 11 and 20;
; K& ]. ~1 b; l# i. [7 H4 moracle如何实现分页$ w9 `; d l2 u( C
73 D1 I2 T# ?$ z( }
通用分页格式,page是页码,size是每页显示条数
8 S$ Q% q( F* Q0 Dselect * 7 I6 G" G2 D# j- L" ~
from (select t.*, rownum rn8 ]3 d; P+ y# T
from (select *
1 ]% X. Y a, K/ w; m from T_BASE_PROVINCE
5 w) S; t' A" d) @0 ? order by id asc) t! _' e* A# x5 ]
where rownum <= page*size)
e9 ]: ^) L6 q- {- d6 E, nwhere rn > (page-1)*size;
$ D( t' b) A( B+ v" `0 f7 n C0 k; L6 d8 ^, o
|
|