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

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

[复制链接]

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

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

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

x
; o* \; C' l* j, @2 b1 l4 a

5 e) I2 n2 `% z+ O使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
# k; [. t2 ]& I/ E3 j1
" b! d. X9 N$ w; C9 D7 Q3 H使用T_BASE_PROVINCE表作为测试演示使用,表字段如下4 U/ B+ A: Z0 k' b/ f
ID        NUMBER(11,0)1 M/ a2 A1 G4 G9 k. [) h
PROVINCEID        VARCHAR2(6 BYTE)9 G- R3 ?' }* D1 L/ B+ Y
PROVINCE        VARCHAR2(40 BYTE)
4 F- U  K+ r. E2 `  T% F# U( H数据可以根据自己的需要,插入一定量的测试数据9 {( I+ r! f8 f. Y6 F/ u
oracle如何实现分页* H  t) w1 t) U, D
2- s7 q* k6 z2 p
查询下总共数据量
7 `, v. x4 l2 eselect count(*) from T_BASE_PROVINCE;
' X: }1 J1 I3 {6 K2 C& F' d1 ^" S在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数# `- l, j$ A4 D  }
oracle如何实现分页8 O8 d( P7 B5 M5 O$ C* U
3" x  O! {9 w5 A3 P& p
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
8 U( {, ~5 u+ x# x; t# Poracle如何实现分页
6 s) u6 K1 g. r3 b, R/ R4
  a% M6 q" t. ^分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
6 F* X0 ?6 n- [1 J! p0 rselect *
) s. _/ u1 e. \% ]# m+ \5 ^from (select t.*, rownum rn6 C- a; R- x, M: [4 o! B4 H
        from (select *) l0 S/ m8 E5 n- O' |+ j2 i
                from T_BASE_PROVINCE
' ]0 R) C$ V; A0 q- k               order by id asc) t
" C: Y/ R4 n, U  G+ {        where rownum <= 20)
% G! m6 e4 f# C1 H- B% E, o, twhere rn > 10;7 d  V4 H7 Y3 ^7 H9 H
oracle如何实现分页% _% J1 y& J" T6 `9 Y# W, K
5' P8 o& s7 ~% J8 D: s0 M9 t
分页语句二:如果不需要排序,可以使用如下语句9 Y: c& a, l; ^9 Y
select a1.*
0 d5 h/ T* B, \5 Q, n, |from (select t.*,rownum rn
/ J0 V' G8 Z. B6 O' g5 ]        from T_BASE_PROVINCE t
7 V' d- X% z! ?: \3 n        where rownum <=20) a1
7 v/ P5 r2 l  g0 l5 E* Lwhere rn >10;
" O. y: k5 s" B9 {3 |oracle如何实现分页
' `4 r& v# N# L5 C6& }3 H8 Y- Z. D& c. j
分页语句三:between and方式,性能没有上面的高,但写法简单% t3 }: y! f0 E- y
select a1.* 5 u" g; ?+ ~* d! }( B5 i. V: H
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
" E# _+ F5 m. |+ T3 |; M# qwhere rn between 11 and 20;
. V. r8 u7 g9 l4 I( Roracle如何实现分页
; J. w- Y/ e' U78 r1 ]% Q3 Y. z# Y. A
通用分页格式,page是页码,size是每页显示条数
( _" o9 h' I* ?6 R* I4 Pselect *
( k/ x; y' ]6 N8 D. Sfrom (select t.*, rownum rn4 L3 ^1 D' x0 @2 E, R" q
        from (select *
+ S" O+ B* E3 U                from T_BASE_PROVINCE
5 }+ a4 ^" P$ q+ v! g, g0 s/ i( W. \               order by id asc) t# p9 X3 T+ Q9 a* s: s
        where rownum <= page*size)
. L, L" j6 ?3 \4 V& hwhere rn > (page-1)*size;
3 S; p& W4 S" d* t+ C. `: ?) c
% u4 i. |$ U8 e
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了