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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x

# D8 f* ^  H' \- T4 \$ _4 K( W+ C, a% L/ `4 I
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现+ D( w2 }$ J; ^" I  v7 j, u) U  P
17 N8 \4 O  l; l" R; H7 a1 \9 A, x
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
0 S. F* ]" d* S, B$ u* x, G% R# @) TID        NUMBER(11,0)1 i9 _" f3 \$ d# [! b
PROVINCEID        VARCHAR2(6 BYTE)2 j3 Q: D  m; e
PROVINCE        VARCHAR2(40 BYTE)
+ L( ~) i1 r( U) Y) H! W数据可以根据自己的需要,插入一定量的测试数据
4 w& [; j" ?) @( G8 ~6 L$ Moracle如何实现分页
/ ~, K9 y& c4 n9 }) W. R4 h: G  X( ^, a2
& c4 }! a4 v- J( O查询下总共数据量1 t" ^; m. g% o% C% B
select count(*) from T_BASE_PROVINCE;
& f0 Y! A- |( y在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数: e9 ~3 i" G, d9 x
oracle如何实现分页8 A4 p' G! O/ M+ q( c5 D
3
2 K. t: B6 c& m1 s! O0 u8 w- Q$ Y: c# C前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
8 ~% u: \  r- H* R  P: ?( E3 loracle如何实现分页
7 Z! \" S( r2 ~$ _2 {  ]4
5 k1 @2 ?  C+ ~$ c5 [% g分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果& G# T: j( K& B" Y7 o# m
select * 8 b% B+ j% N6 w2 v" y6 ^$ l
from (select t.*, rownum rn
. `: s8 O  j1 m- Y) {        from (select *
( w# ?# y: G/ D2 c0 b- d                from T_BASE_PROVINCE; Q; W! ^/ L- p* z" w& N% m5 l3 Q
               order by id asc) t
# K0 }1 S3 a! z$ @7 q; @        where rownum <= 20)
1 I; `$ H3 B0 N4 g, j* ]0 Cwhere rn > 10;3 b! s5 C5 s# Z# O! ^
oracle如何实现分页7 B" ]9 i" k; D
5
6 Z, E+ W0 Z% D& u分页语句二:如果不需要排序,可以使用如下语句6 h! k4 k9 z% |% G! I! F  m% K
select a1.*
* M$ Y+ W0 D: r" h3 D" T. ]from (select t.*,rownum rn 2 b. v6 |6 P2 {, D8 \
        from T_BASE_PROVINCE t 1 e7 ]. T% ~5 Q6 m
        where rownum <=20) a1 * W: e9 V2 j2 |1 w8 [2 Q
where rn >10;5 X% ^# R1 C/ {" F! O* U
oracle如何实现分页
% k" S$ O, n: E0 w' E60 x; D/ i( {, T8 D+ e5 p
分页语句三:between and方式,性能没有上面的高,但写法简单
3 R4 g; [+ h8 Rselect a1.*
7 }" z9 C, S; h5 d$ x- {& K! R* Hfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1
5 Z% C1 ?1 v6 U% K( I, dwhere rn between 11 and 20;& ~6 O; s1 L1 G9 a' y# l5 I
oracle如何实现分页9 N& R% |* P& Q. \
7" y  t; i: _& d
通用分页格式,page是页码,size是每页显示条数2 v0 x/ ^# v; J6 v
select *
! e8 f* \7 h6 B8 a3 Ffrom (select t.*, rownum rn
5 P+ K3 Q' B' g) J        from (select *
3 F/ ]$ v  R0 Q5 b# k& X                from T_BASE_PROVINCE
- t/ F- F) s1 H7 ^! Y4 |% s               order by id asc) t
  ?' Z# ]9 |1 j& H        where rownum <= page*size)
+ I+ B" q. P7 S5 c! ], ^. Zwhere rn > (page-1)*size;5 B5 x2 ?! b* |  Z6 ]* n, m
& S. {1 w& G) V" S0 y
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了