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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

积分
82162
QQ
发表于 2017-11-3 16:22:57 | 显示全部楼层 |阅读模式

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

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

x
( y8 s- T9 m' H! t: t! C
4 ?: P8 r! j  a3 v: w
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现5 ^* Q: m6 N% K1 U
1
: q7 }1 l# [3 j使用T_BASE_PROVINCE表作为测试演示使用,表字段如下4 U5 W) E0 c7 X: O  M4 r1 A
ID        NUMBER(11,0)2 [& t5 T, n$ r! [& _) ^
PROVINCEID        VARCHAR2(6 BYTE)9 E+ t2 q  U1 X% l+ o  E3 c- V
PROVINCE        VARCHAR2(40 BYTE)
, y' B  B" S# ?1 s数据可以根据自己的需要,插入一定量的测试数据2 i3 |& D+ g  n
oracle如何实现分页) \) G: ]  Q# M5 f  V! }
2# o, U; j8 k, U. \+ S0 C7 i
查询下总共数据量
) R. K# e5 [5 B8 A, }. lselect count(*) from T_BASE_PROVINCE;  y# J* u& ^; L% J; Q+ p1 p# U0 p
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
5 x! I$ g+ p: f. W" K! {oracle如何实现分页3 D8 `3 j% ]0 V" r' m$ ?. W) C
3
0 ^: I" D+ ]) z1 M前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
  B9 n5 d& y5 i5 Q' F- i+ Noracle如何实现分页
# e( S+ m2 G/ x7 f4
2 v8 ~% K  l. S) \0 j2 n$ X# Z; E分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
$ l6 S* y  {& g( vselect *
% Z* C8 x8 a( H2 v& M: X7 n3 qfrom (select t.*, rownum rn* V. z$ J& N1 S6 T0 K
        from (select *
5 d3 T9 x6 Q' j& t( {5 M                from T_BASE_PROVINCE
5 N# V( t" y; B: g6 G1 G$ }/ @               order by id asc) t
- T2 d2 a4 u  t2 O6 G  h6 g( m9 \        where rownum <= 20)9 S" e, f& K. n( {: ~
where rn > 10;7 b4 x) d$ \& U, v- g- \
oracle如何实现分页
" @, J! ?% [* d8 J5
. o+ v- k2 `" `7 P; q分页语句二:如果不需要排序,可以使用如下语句
% }0 j; V  T: P- K1 U+ Gselect a1.*
+ i5 U- [2 z0 V( S3 u4 H, T5 k, {from (select t.*,rownum rn
. C  `0 x9 c, p8 Z  ~/ S% ^0 S; q        from T_BASE_PROVINCE t % p* q, t9 x) ^3 l" g% o: i6 G
        where rownum <=20) a1 & I5 D" B9 N3 g4 i8 E; |, `& g
where rn >10;( Y% |: |! h7 s
oracle如何实现分页
& ~1 x% O8 o6 f3 R+ r  ]62 R( a* k+ R% O  b+ D
分页语句三:between and方式,性能没有上面的高,但写法简单
# k. e" U# ]' Yselect a1.* + u& ]& _$ _0 \, K: U, L
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
/ i- f3 u" Y! X9 M- P4 D" ~9 q  jwhere rn between 11 and 20;
  w  ^" f- U) [( z) j- Xoracle如何实现分页
( h$ L1 J. A' g6 {- L$ _9 g/ i7
) G- k" f2 f" E) g6 l: u  d% s( F通用分页格式,page是页码,size是每页显示条数) Y( P$ s5 C# a
select * 8 f& t; y1 e& I. @9 F
from (select t.*, rownum rn
5 j" Q" }* I0 g: B" j  \        from (select *# |4 j7 l8 k1 `- m; N/ `
                from T_BASE_PROVINCE
+ q3 Y+ M# b& r0 W               order by id asc) t: j& J! D* s+ ]( f' e
        where rownum <= page*size)
2 N4 a( ~( v% Iwhere rn > (page-1)*size;
6 r! Y2 V- o4 o3 I5 [$ m# c, H9 W! ~
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了