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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
5 d$ H/ K( m) n9 ~

5 w7 o0 S; K+ U1 a使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现3 V6 ?5 p8 Y# R# D0 R
1% P; C7 d6 `% r& c* `
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
8 _/ G3 B+ W- ^: s  m0 F/ g# {ID        NUMBER(11,0)- r9 Q' W% ^2 P1 D# t) u
PROVINCEID        VARCHAR2(6 BYTE)4 {. B5 z; o+ Q# g8 u+ k: b
PROVINCE        VARCHAR2(40 BYTE)
1 I9 o/ u, F5 p! k. I# {数据可以根据自己的需要,插入一定量的测试数据
( K9 o: m1 F1 Z9 U: s5 J: k) U& Koracle如何实现分页9 v4 O$ r* i# F, G& K6 @
2+ \6 s  v5 W+ E' g6 Z' `, K
查询下总共数据量; Y- H: d" }1 C3 P* k
select count(*) from T_BASE_PROVINCE;; A/ I9 }" @; b% o) G
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数2 j0 [% C3 o6 ?) D9 g6 ?$ e! Y' b2 @
oracle如何实现分页
5 e6 O7 q3 S5 T) s: }8 |3( [+ O9 i1 V/ N' P6 X
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据  f) b3 M8 V0 b9 K& D
oracle如何实现分页+ S% l) h. e4 q* v0 g
4  |3 j/ X, ?$ k5 C- }
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
, S  \/ V# ^7 H. K; n8 dselect *
# p- `6 l! M& J! N/ u3 h. Wfrom (select t.*, rownum rn
/ p) i1 v3 }' N- x        from (select ** l2 k& `0 h( D. C, q% h
                from T_BASE_PROVINCE
# `/ b' g' R) L/ q( B  z* v& j; ?               order by id asc) t$ J) D/ p0 @% z3 I4 y# G
        where rownum <= 20)
; q) `( D+ V6 S: G- J$ A# Gwhere rn > 10;- |+ G! M# w% p. b
oracle如何实现分页: B, Q& h" j& p( a' A; K
5- S" v% U; [6 R" F+ m! d5 s8 ]. I
分页语句二:如果不需要排序,可以使用如下语句
! ~) b; X6 J& J0 y) M5 Pselect a1.*
2 b/ b* o- r# Q9 ofrom (select t.*,rownum rn 3 t7 z7 k4 B5 }& \) ^/ ~
        from T_BASE_PROVINCE t 2 G* s) Y" P. ?8 ~: @. |, q
        where rownum <=20) a1 . W6 y/ F( }4 L
where rn >10;- o" A' }8 i0 `- |
oracle如何实现分页0 ^! K6 ]/ A; D5 S0 V9 l9 V
60 J, [/ D8 _; X3 b0 ]/ z
分页语句三:between and方式,性能没有上面的高,但写法简单/ u2 z6 @$ V% [2 s$ ^
select a1.*
5 M) S: e) i+ b' ]0 r8 I% n& Y0 ^  Tfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 / P9 v# N$ t) r$ t; k
where rn between 11 and 20;- h& z6 J4 K$ N8 ^
oracle如何实现分页# \6 }; b. A+ c" P, t+ V
7
7 |5 P- n2 ~1 W4 O- A) v1 q! Q通用分页格式,page是页码,size是每页显示条数
  h9 Q& [0 ~3 k+ h0 |( R. J% Fselect *
1 J/ \$ H7 Z: `; N( N% P8 s: v- ]from (select t.*, rownum rn% H# J+ y% m! N% D
        from (select *7 B- r; G- U! j8 O
                from T_BASE_PROVINCE
; _% B! i/ I( l, ?# L/ v               order by id asc) t
4 Z, P$ t6 j9 e. }$ N4 y        where rownum <= page*size)" ^6 J) ?. g2 h. l/ p1 K! {
where rn > (page-1)*size;
2 s) X/ E2 r' D* C* F: M
% _, Z7 W$ y8 v
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了