PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x

( T2 G. E7 ]% o6 q) W# b3 T9 n
4 G3 O! X, n/ g2 e; C# \使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
  U  q3 H1 U& A7 G1
* h5 f# Z9 C2 Z$ u; d使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
- g( K5 L3 ^  o, }ID        NUMBER(11,0)
' f) n4 n% \  v9 wPROVINCEID        VARCHAR2(6 BYTE); U& b4 @* p8 y/ ~- e/ G% L$ _
PROVINCE        VARCHAR2(40 BYTE)# X# R1 ~  Y8 B- u5 B/ S. P
数据可以根据自己的需要,插入一定量的测试数据
9 r+ `8 `. ^" P4 poracle如何实现分页
' h; T) S0 C# k26 }& v+ i; V. \. A0 @- J
查询下总共数据量! s) V  K; K9 i  W
select count(*) from T_BASE_PROVINCE;
8 G1 j; H: g' N' u. h# p在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数8 i. u$ t( D+ w( r
oracle如何实现分页9 V5 Y9 N( K, i+ L7 V* x
3* F' c' T7 m2 t  X+ Z$ f
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据; T! N2 ^* b/ f6 w
oracle如何实现分页" F$ e) {$ G; K; e. u9 B
47 G7 t8 e$ f5 ]* B
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果1 O7 Z+ P/ T  g1 w9 B: h9 _$ A
select *
* `' B6 {5 X) F+ J7 C) k7 sfrom (select t.*, rownum rn- H- C! }# q+ T& }; ~  _
        from (select *
' o, Z( B8 r, K2 O9 t& ]                from T_BASE_PROVINCE$ R1 c9 J+ E, Q" g/ o
               order by id asc) t
* N! d9 T: |: b* V        where rownum <= 20)
2 \& \- G1 ]7 S& w/ E6 a# z" fwhere rn > 10;
( _2 Z8 m" B( _# Poracle如何实现分页
  t9 d8 e% z; F' c4 t! [1 C" L5- W6 f5 j2 M- z& H/ @2 t" q
分页语句二:如果不需要排序,可以使用如下语句; O, o, A: y5 N8 \  I9 L- l
select a1.*
+ A4 F- Y4 I: bfrom (select t.*,rownum rn
$ s: K1 ~  o+ `4 I. F/ }        from T_BASE_PROVINCE t
! v7 I2 Y) L4 J9 ~- Y2 w/ K3 K/ L* R        where rownum <=20) a1
, J4 s4 q( l7 M& w& owhere rn >10;
2 E* h2 A: m4 H% R2 Y. w( koracle如何实现分页
4 }. ?% A' _) j% E  y2 G/ _6
% e8 m4 a) n& }! f分页语句三:between and方式,性能没有上面的高,但写法简单/ e$ {' O  u% f2 V8 a
select a1.*
0 i& B& h8 {# a" V6 m  ]2 ufrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1
$ l/ [- K5 t8 x& K5 q# u( Bwhere rn between 11 and 20;
' j) G* m/ n$ M& o& U# y" y8 }oracle如何实现分页
. G, M: D7 s. @9 {% N0 d7
2 A3 L5 F: s. S, V$ A& X& p通用分页格式,page是页码,size是每页显示条数
4 }3 @- K+ K' _) \  S: Qselect *
& T+ z# d! ~. Ifrom (select t.*, rownum rn
+ T) ]+ b' V4 y  W4 x        from (select *
3 x0 S( D: W9 C                from T_BASE_PROVINCE% B5 ^( B! O3 r& A+ ~# }$ `
               order by id asc) t
1 F: g- F1 [* h7 @1 s4 L        where rownum <= page*size)0 {' G0 i3 `7 A3 r( s8 T
where rn > (page-1)*size;
) X" L  f: I  A3 _* y3 b2 v/ b% ^9 l
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了