|
|
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要 登录 才可以下载或查看,没有账号?注册
×
- w/ s ]: L/ q6 r& R6 J
1 T u+ A+ W8 H6 h7 ?0 q: v使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
6 `+ v9 ~ w1 D6 f/ ]4 @4 V- d1 _& L& d# m: V8 P! o3 N2 [
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下4 ]9 S# q5 W5 {! c7 ^
ID NUMBER(11,0)
* e7 L' S9 Q [* I0 ?' bPROVINCEID VARCHAR2(6 BYTE)
1 C3 h$ H M9 d6 I' l/ iPROVINCE VARCHAR2(40 BYTE)- ^) a3 d. h, N+ X9 q) b% h3 Z
数据可以根据自己的需要,插入一定量的测试数据
* s1 t1 L+ h; s6 l, s$ doracle如何实现分页
& G7 W, K0 l% B5 _9 g D5 D2( z( ^+ D8 V) m, l( q) E& Z
查询下总共数据量
; n" } Q- \/ [5 Uselect count(*) from T_BASE_PROVINCE;1 v- Z6 }, r, ` W$ `2 h
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数! P& U+ _7 a" {% o: H8 x
oracle如何实现分页
$ d$ V5 n. P! d* i6 w3 x* v1 a" ?& E! \- \8 q
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
4 u- Q; Y: t l i( uoracle如何实现分页$ F4 M% L3 I4 F9 ~
4. U% F6 j9 X c
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
! d4 c, X2 T9 l; c5 Y3 Gselect * 9 i6 t" M: a/ g6 x. N9 e9 U, i
from (select t.*, rownum rn
- Y: O# [' U# Q; \( e from (select *6 {# r$ p+ k5 P) ~$ ^% D- L
from T_BASE_PROVINCE
& x6 u3 \3 O% Z3 Q$ F. m- a( N order by id asc) t5 M- E% n( o0 a, ]6 @/ C1 H# N* w
where rownum <= 20)
: O! P. R: [* U" y0 bwhere rn > 10;
B* w6 }8 a/ _$ `7 I% L" ^oracle如何实现分页
4 W- f9 V3 ~# b( t; s53 }/ v. y2 T1 n' \$ I7 L2 @! x9 S
分页语句二:如果不需要排序,可以使用如下语句0 K9 j8 K7 r% C7 ~; b3 }
select a1.* ( [! M& P! F$ j( i4 S
from (select t.*,rownum rn / W/ \5 ~* v, e6 V7 O2 V1 h ~! {% _
from T_BASE_PROVINCE t : i+ G: r! [1 y' [3 v) T
where rownum <=20) a1 1 j! q0 k" m; v' r6 M0 r
where rn >10;% x: z: U" R3 R4 h% H# x9 `
oracle如何实现分页 S8 J6 `/ n' D7 `1 R, |6 V0 @- _* H
67 Y0 @! w) ]5 S; N1 f+ m
分页语句三:between and方式,性能没有上面的高,但写法简单
, b. ` |! @2 E, f: o6 D- |select a1.*
' }3 d6 P, _ j0 @1 ~from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
0 f# t" R! {9 o; a! O; X* g+ {where rn between 11 and 20;
* F! S7 n+ y( b# g6 H4 p) P# soracle如何实现分页
( S/ J; F2 h2 |7 _7- Q! e, \! r' D4 u: _; @! N
通用分页格式,page是页码,size是每页显示条数
9 ]# T5 o4 P9 {* @: Hselect * ' V& }$ m. B$ Q8 u
from (select t.*, rownum rn
$ N' y F/ e8 f/ m! E M, T from (select *# r9 R3 J& r) o0 Z. J! ?2 ?& m
from T_BASE_PROVINCE
. R/ v! p- \. @( I* ?5 d order by id asc) t
1 _: t7 @9 p' b3 B! u! h' \) Y where rownum <= page*size); d( [/ Y- g: M: D. \% D: U+ Z
where rn > (page-1)*size;
2 O N8 M6 B; Q% X6 U8 Z: u+ W2 {2 [8 {3 f; F2 Q8 y
|
|