PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

admin 发表于 2017-11-3 16:22:57 |阅读模式

admin 楼主

2017-11-3 16:22:57

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

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

x

) K+ O, N$ D3 F0 k! L# S% G- J6 N& E! \
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现/ T0 u$ C/ T9 a) j$ y2 F
1
& ?8 }' J, `5 r5 g使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
; q0 V( Q% u! V% sID        NUMBER(11,0)
4 g2 z6 I- d, \; EPROVINCEID        VARCHAR2(6 BYTE)
1 S1 k9 C$ A7 S3 BPROVINCE        VARCHAR2(40 BYTE)
+ c- p7 z- S  |& M* {& t6 r数据可以根据自己的需要,插入一定量的测试数据
" i. t0 Z  O  w7 Zoracle如何实现分页9 ?7 y7 g7 q8 V  q3 E' r; B
2: {% ]0 V7 T0 b! ]# k  Y5 m& Z; F
查询下总共数据量
2 x& o" ~3 P4 k" @select count(*) from T_BASE_PROVINCE;# s1 q, O- H7 T- X/ F5 Q$ ~
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
7 T" _) [+ ^7 d( p. F% t7 b2 Toracle如何实现分页9 r9 _3 y7 Q( T3 D! {8 ~
3
( ~4 i- ^8 n$ T- ^7 H3 M前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
* p9 _! g* v9 Z/ ?oracle如何实现分页
6 S0 r+ m/ J$ Y4
, _, d( y8 L5 \3 _分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果  f0 h9 B0 a2 `  A. u8 Z
select *
- r" g! r1 u! O/ v, ^$ [. Ifrom (select t.*, rownum rn5 N+ A5 n- U; f  a3 }
        from (select *
5 {* b. M1 i  |( w                from T_BASE_PROVINCE. B; ^4 m- {8 r& M; ]
               order by id asc) t" c( J: `- I5 Q) C0 O
        where rownum <= 20)- t/ Z7 e- U! |! N; Q9 e- Y5 `
where rn > 10;
2 S0 P8 H9 B* I& h5 G( y9 A1 aoracle如何实现分页' B; Y! q/ W) S8 f, N
50 y! T2 t! ]; G, Q; g, U3 q" K( v
分页语句二:如果不需要排序,可以使用如下语句
( Z7 w, h0 N5 d+ [/ K2 L7 rselect a1.* : |* S) W$ \+ f0 q
from (select t.*,rownum rn
8 b1 d$ ?9 Q- C6 [! |! d  t3 i/ ?        from T_BASE_PROVINCE t ' g9 k8 Z0 ~# x3 o
        where rownum <=20) a1 # x" v1 d) h& |7 D2 f. W: S$ l7 c
where rn >10;! l- ^" Z1 U. V( n8 ?
oracle如何实现分页" _5 y( U% K! ^/ e6 Y5 f7 Q4 k
6
# M- S! Y+ H9 |' w! Z7 H5 U1 C6 A分页语句三:between and方式,性能没有上面的高,但写法简单
0 @2 w, T7 D+ R5 m# z5 aselect a1.*
. o3 d. k- |* o6 Y" afrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 ( B$ B$ y) v' `! O& m4 c% w
where rn between 11 and 20;
4 I5 E& I# B  q9 E" ?oracle如何实现分页7 e* ^5 H. X# N3 }# A* ^: V
78 D, l* j( ]3 G. S# M( q$ }. E
通用分页格式,page是页码,size是每页显示条数; E: p! g( i9 s) f: B+ ~* ]
select * $ a+ O5 N6 P9 |6 \
from (select t.*, rownum rn8 b- P. y8 {/ z! \5 D3 ]- D
        from (select *
+ O6 q! d: P# {* E) ]  Y3 A; ^                from T_BASE_PROVINCE
8 T3 D. o4 n% |' h8 M4 B6 z  a' R               order by id asc) t
, }( S+ G2 p0 @        where rownum <= page*size)
) i8 D8 I' L, ^) b5 [/ m0 [. ~where rn > (page-1)*size;0 v2 i) `0 u; j% T& e+ N9 e$ Z- C

' b; _5 z2 q7 A* p- E" p
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了