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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x
# T. Z; l/ @8 }4 |) ^5 ~( d# N

2 h6 Q6 S" f2 k- K: [% M使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
8 \. A0 e! B2 l. u1
5 F: a9 M5 H& C, s& h/ x" R+ P使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
/ e2 C  K9 m4 s8 u2 T! _ID        NUMBER(11,0)
8 \9 O2 v; V* j# f- vPROVINCEID        VARCHAR2(6 BYTE)# m3 ^' }5 D0 Y( H" J6 {
PROVINCE        VARCHAR2(40 BYTE)' Q- g; K4 g- N
数据可以根据自己的需要,插入一定量的测试数据
& Y0 K: l! f, D* E, Z0 Xoracle如何实现分页
+ M1 @9 f# V$ Y0 h3 e* Z$ h2
( c0 ]9 M- ^+ V' r( P7 G查询下总共数据量
- Y) k" t& V( H& ?; ~# X, }select count(*) from T_BASE_PROVINCE;
- Y6 z3 m. x7 x+ e0 l8 X; k在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
) @8 |# C$ Y1 W3 t4 Foracle如何实现分页
2 o8 H$ U$ O) y# @3
" W3 Q1 _* l, v8 S5 k前面的测试数据初始化完成之后,查询前20条大概有什么样的数据( Z7 F  X/ o, h! _
oracle如何实现分页, C% ]6 K; [! K; o8 z1 d1 X
4
. J" d7 V7 J/ V& D3 F/ z5 m; V分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
5 Z6 V# w; x5 f7 D- c$ k, C; yselect * + r% {9 x' Q" ^/ ]2 r! E2 f% Z2 H1 n
from (select t.*, rownum rn- D) B4 j( d: h& t, {" k& L0 O+ g
        from (select *5 _" x8 p  D, s
                from T_BASE_PROVINCE1 \& A2 V- b5 }& w: a  i  N
               order by id asc) t4 a# ~5 W+ t/ @& D5 |  {
        where rownum <= 20)  R, I5 }5 w  l# u- h0 e
where rn > 10;
2 }: W; n/ v9 ?oracle如何实现分页/ h2 o! _3 k2 ?
5& Q) w6 f9 B3 u: s' {6 [# g% Z
分页语句二:如果不需要排序,可以使用如下语句/ `4 v6 y# v* l( `. Q" e( q
select a1.*
  K8 j; u3 W- D' E6 G6 Jfrom (select t.*,rownum rn
  p1 J, z9 W3 \; v3 |1 F: a! |        from T_BASE_PROVINCE t 6 G% u- ?# D( v' \, i3 _, ^
        where rownum <=20) a1
5 n5 P! ], q% x% ~) j* t& v9 zwhere rn >10;5 ~* V% d! l1 p! d9 x; V
oracle如何实现分页$ W8 ?% Q1 p- l5 H' G# g2 ?& [
6( Q( |; V7 ^* z2 E, o( c1 ^
分页语句三:between and方式,性能没有上面的高,但写法简单
  j! E2 d: `& q# m  E- Yselect a1.*
. ~' F) u6 W$ N- ^from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
- v2 R  G6 r7 b" f( xwhere rn between 11 and 20;$ b( w1 l& `& u' T- ~, y
oracle如何实现分页) @9 j0 W7 Q& H
73 g$ L/ p/ B' b+ U/ m& m# M3 {
通用分页格式,page是页码,size是每页显示条数
6 ]4 w8 x9 D/ I; C3 m8 rselect *
2 T- S) \; T" z# L" f( D- s& W6 tfrom (select t.*, rownum rn9 j! t! v1 Z, G* U
        from (select *
4 p/ f6 @! q5 F4 ~8 X                from T_BASE_PROVINCE
" R1 y% E8 p  {3 r* s, k3 q+ u               order by id asc) t) s. J% g) l! B. I' U" u$ V; B
        where rownum <= page*size)
0 q; t. A* `/ R" }- hwhere rn > (page-1)*size;
8 k3 T6 _6 n4 b3 U9 C
5 [3 M$ g2 b# D5 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二次开发专题模块培训报名开始啦

    我知道了