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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x

# Z; z7 K6 u3 P. E1 _) z+ P9 u' [1 P5 D( A/ c1 o; p; h  e
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
' Z. h3 h3 B6 p# i& R! f3 ]( q1
5 ?5 w( H; [$ f使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
" b! i& B5 Y' {6 [: w% w8 [ID        NUMBER(11,0)& g7 Z% C! z9 N$ \
PROVINCEID        VARCHAR2(6 BYTE)1 z3 i9 _, z( A" g( o2 i8 D6 [" F
PROVINCE        VARCHAR2(40 BYTE)
6 X/ `4 C$ i4 p+ k' ~数据可以根据自己的需要,插入一定量的测试数据
- T! W% z9 f! m0 L( S/ _oracle如何实现分页- ?6 `% G4 Z2 e! `' @8 d
26 n" q: r& X) x2 W% a
查询下总共数据量
6 d8 p. w% M9 q% i4 Nselect count(*) from T_BASE_PROVINCE;
7 ]3 F7 ?4 _2 R* e$ \在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数1 U" C# X% G& h. |
oracle如何实现分页
6 [' E9 m9 O2 T) t1 f5 Y7 M0 d3
2 B2 k* D# L; H2 S, [+ B前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
* u( P* c( m, \oracle如何实现分页
! n5 d( d% N- K+ j9 v9 C4
& k/ G( Z, t, t' o分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
% w: e5 u8 U6 [0 f8 g' Jselect *
6 Z9 P9 V" e* M4 f& Ufrom (select t.*, rownum rn
, q( O: e& Z+ q! }        from (select *
& s, z6 Z: I) v* G                from T_BASE_PROVINCE: p- G/ m$ L) V" y
               order by id asc) t6 T: V) T9 }9 w
        where rownum <= 20)
/ r9 y) h" B0 w0 m1 \$ Nwhere rn > 10;" Q7 x" C- [. ?" \
oracle如何实现分页2 v  Q5 ]* z  u
5
2 t4 V; M3 @, R0 S& L, C* S分页语句二:如果不需要排序,可以使用如下语句
+ D  ]0 o) Q* ]. j  fselect a1.*
5 Q  k+ T" E) o! [+ T- J" rfrom (select t.*,rownum rn
/ w& {3 L  k, Y+ N; k        from T_BASE_PROVINCE t
8 K! Y; \. {4 ?7 x! O        where rownum <=20) a1 $ }$ E) f+ l( o" ]1 O
where rn >10;
+ R, F; P: ^( M* Q" R& @oracle如何实现分页
$ m8 D' @# B" G; d6
2 [4 R4 _; q' Q: v7 ]4 t, l分页语句三:between and方式,性能没有上面的高,但写法简单
2 n4 d0 `; {5 c0 a* M1 fselect a1.*
/ L3 h* ^; ~3 o; P, Q/ I& kfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 , s: K7 @& N% a5 Z
where rn between 11 and 20;
4 @% ~2 z( [9 `' ?" k: W7 O- Xoracle如何实现分页( C  Y' i6 y0 R' C
7
- b$ F" p7 z# |' T2 P通用分页格式,page是页码,size是每页显示条数
# ~4 k4 E: v+ q! D$ Kselect * : ]6 K4 C) T, u, X% C& Y
from (select t.*, rownum rn/ g% Z$ {) \  V. y2 y4 o
        from (select *8 C; ^! @* |: I* k* n+ `0 l' d; N
                from T_BASE_PROVINCE
$ e6 e& _5 C& d               order by id asc) t
8 G, ]! n6 L. P  g* q  z, V        where rownum <= page*size)" F+ _; m3 G4 W) u7 H$ p7 B
where rn > (page-1)*size;& ^( m) m: f3 u' E# b, H6 L9 n3 a

7 `8 ~8 Y" p7 H: z0 c+ \
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了