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

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

[复制链接]

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

2470

主题

1275

回帖

8万

积分

管理员

PLM之家站长

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

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

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

x
2 y  k8 K: L0 P) Q8 X8 C+ L1 J
5 T9 k7 O4 V$ D8 \$ i& D
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
) N9 _0 _% _: u; w! f2 T4 \1, s. T1 K1 m/ c! Q# T. l
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下. q+ }6 S$ d0 J! i
ID        NUMBER(11,0)8 H3 ]* `& p' S! U0 q: h2 {
PROVINCEID        VARCHAR2(6 BYTE)0 l5 y# `" X. A/ F
PROVINCE        VARCHAR2(40 BYTE)9 H3 q( z% i! p1 z7 |7 O# ]
数据可以根据自己的需要,插入一定量的测试数据
0 ]4 ~9 |& h% Z! zoracle如何实现分页
6 v& V. g% A3 j& l2
; ?5 M7 _- T# o查询下总共数据量/ [: V! X  C, t/ O$ d  r, m  S
select count(*) from T_BASE_PROVINCE;
1 N; S  j! n# L0 E0 g在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数/ o2 N, N$ u3 s8 D) `
oracle如何实现分页
8 u. K  ?) f# S% X- S' ~) b3 w3
$ z7 W1 J+ Z3 v9 M2 U/ m- A" C% V前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
' B! w4 b! C7 Woracle如何实现分页
' Z, u' x3 `3 w! ?1 \4
: o1 j' }6 n5 v1 l( e; ?& `0 a分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
+ X6 _$ ~" S: G3 Qselect *
; I# g. I: U: X7 U7 s5 s6 h) qfrom (select t.*, rownum rn
( \/ r. l& f2 d0 }        from (select *& R( f  z0 t, f' W; X
                from T_BASE_PROVINCE
  G% p' I' x4 ]- Q' G               order by id asc) t. R; C- F3 P) S: V. ~
        where rownum <= 20)0 a1 Z* L- _/ V& }7 |
where rn > 10;4 \7 J; [% ~! x% H* ~$ k4 K
oracle如何实现分页
! ]* M* R$ d# i  t4 Y0 u7 I4 J9 t5
$ w+ f" N. Y! j# U5 Y) r( z8 n8 e6 s分页语句二:如果不需要排序,可以使用如下语句9 p. \- {, A. a' \! h5 _
select a1.* ! r$ _/ l; b" q. f5 F8 f; t4 f& n
from (select t.*,rownum rn 2 z+ L) k: U" Y9 r6 D2 m8 X
        from T_BASE_PROVINCE t 5 D* G5 a) }' ?3 K3 x
        where rownum <=20) a1
) w: m% }+ |/ h  o6 D$ Y. v" h" Cwhere rn >10;
2 I& O" \- P# ^oracle如何实现分页
; p0 G# m. y: c9 s. k' x64 R* @7 ]& W3 G% }7 @4 d% L
分页语句三:between and方式,性能没有上面的高,但写法简单
3 |! ]. {$ b  ~* v. ?- oselect a1.*
9 X! O" b$ Q' b  Rfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 $ Q# q! k7 {/ }4 n+ m& [
where rn between 11 and 20;) A0 C- ^3 _4 ?
oracle如何实现分页/ G# C% Z2 p3 {) [: E, b
7
# F$ f7 h8 L2 G5 `" a$ [通用分页格式,page是页码,size是每页显示条数
2 Y$ J5 N3 X5 ?3 Iselect *
6 X. \9 P. e$ W9 r, dfrom (select t.*, rownum rn6 k! j  V+ r" ]
        from (select *
( o4 {7 [; ?8 ~) K) [                from T_BASE_PROVINCE' f$ ^: V4 p0 c4 X8 _
               order by id asc) t' N, B; s% t/ x: X- r& K7 g
        where rownum <= page*size)9 Q0 ~. \! U1 `! Y: G4 I
where rn > (page-1)*size;4 B4 C& b7 C* W
; j- L4 q& g* [; U# 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二次开发专题模块培训报名开始啦

    我知道了