PLM之家PLMHome-工业软件践行者

[转载电子书] Oracle 实现分页查询!

[复制链接]

2017-11-3 16:22:57 3099 0

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
5 R3 U- ]- c( V( L: P

) b: _8 A) v6 c) D- t( u9 A3 ?使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
! v5 W# r4 d% \6 E# M1
5 C. b! O9 u9 x3 O/ B/ A使用T_BASE_PROVINCE表作为测试演示使用,表字段如下- p5 a' H& O) i; j, k! I: E
ID        NUMBER(11,0)- r. T8 d! \6 Z* |0 N- m# q
PROVINCEID        VARCHAR2(6 BYTE)
/ \2 Y3 D3 ^* r0 APROVINCE        VARCHAR2(40 BYTE)9 t5 |" T$ p( D, c% z% z) n) `
数据可以根据自己的需要,插入一定量的测试数据% O* t9 l, [, \5 P" o2 ]
oracle如何实现分页
' i5 s6 H% h4 I& |7 }& L' k0 y2
/ L+ k" d* C, `6 b- m6 w$ N查询下总共数据量
% X7 m3 q6 O, oselect count(*) from T_BASE_PROVINCE;
. Q7 {2 W- C5 r" J9 g# q1 m; O2 X在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
2 w* ?8 H; `& x: i& K* _" Z* ?$ poracle如何实现分页
/ \" K. m# t3 b' z' l' Z3
) o4 T8 E! ~' Z0 ]前面的测试数据初始化完成之后,查询前20条大概有什么样的数据' ^' c! t9 H4 F1 y
oracle如何实现分页9 {- g9 k9 u  H; E
4
0 \; j( p/ ~. ^6 g2 Z+ l分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
7 Q/ Y% Z$ T1 _6 u/ aselect * 9 H! V8 c% t- j: L0 R' n/ U
from (select t.*, rownum rn' Y0 ^% ]( k) A5 u
        from (select *2 S/ A& q& {6 j2 ?: M1 ?
                from T_BASE_PROVINCE, }6 o5 Q3 h3 a% ^' Z& r
               order by id asc) t
+ R8 P) J, c1 `% _3 v        where rownum <= 20)1 J: h$ n( C( }/ Q
where rn > 10;
  c3 p9 X* B4 @9 P! P3 z  s0 Uoracle如何实现分页, O  S0 ^0 x/ C3 C* o
5# W+ H/ H' V' X( ~4 c# Z; _
分页语句二:如果不需要排序,可以使用如下语句" b# S. n5 o- p
select a1.*
* \. A, X4 [! |. C+ {; l# y7 l( wfrom (select t.*,rownum rn
$ c4 S* D! P3 w7 _- Z1 Q# j        from T_BASE_PROVINCE t / x2 p( X, H1 t7 W
        where rownum <=20) a1 & |8 ?2 b# n2 q
where rn >10;0 v4 ^( x( z; r# s4 g5 [6 \
oracle如何实现分页, ]4 J3 J+ _  [; w. p) y
6# X/ a+ D4 e. |( @! N2 D
分页语句三:between and方式,性能没有上面的高,但写法简单
# q$ {7 t7 u/ d+ e- e* Xselect a1.*
" J/ R0 s: l4 ffrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 8 s; E6 D0 s8 I! @2 N
where rn between 11 and 20;
3 m- y, a( N8 ioracle如何实现分页
6 I% j& L6 z" R9 H( ^8 X2 F7
) Q; p' H. @; M2 I通用分页格式,page是页码,size是每页显示条数
( I# K$ \4 ^# i# I  ^+ fselect * + R% E+ C8 P/ [4 ~2 |
from (select t.*, rownum rn0 N8 U8 q  y6 M
        from (select *
. }+ B) P3 J0 z8 x8 s1 Y                from T_BASE_PROVINCE
  Y! D; l0 C$ y+ f               order by id asc) t: S; Y/ e3 H7 K% O3 ~( a0 p
        where rownum <= page*size)" `, h. H1 A( Y, k$ C
where rn > (page-1)*size;
/ i& N1 r9 j- B* V: T' Q  A0 a0 w
7 f8 _2 p: \! B3 f3 S
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了