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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x
8 k: V' |: C; u3 t  L8 i) x
6 d* S6 `# J( w/ J& t( H9 \3 M
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
7 W: v( `( c8 L6 @1
1 a% v& |5 L* T; |: x/ P, `使用T_BASE_PROVINCE表作为测试演示使用,表字段如下8 \& H2 M8 W4 ^! c! r! B
ID        NUMBER(11,0)
5 h5 e! |" t$ pPROVINCEID        VARCHAR2(6 BYTE)% N2 O1 t- c0 U7 s- y, V
PROVINCE        VARCHAR2(40 BYTE)
7 C/ f9 k6 V& R数据可以根据自己的需要,插入一定量的测试数据. A. \) ]/ z& Z. P6 r  T/ b
oracle如何实现分页
' {+ ]6 C8 T: @1 q7 q9 i% u2
# z; X$ u. z6 T; f1 r查询下总共数据量9 I# ^' c, c" E
select count(*) from T_BASE_PROVINCE;, s" Y+ k. z! o+ z
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
7 z/ R3 _3 F$ V+ B) @' @oracle如何实现分页
: K0 O& E, E9 p/ Y9 e3: s8 }/ Z7 n! `8 d. r: \* H
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
1 J" G  b% v4 d* Eoracle如何实现分页0 K# w  N& y8 \" T9 D0 b; \/ b
4" N9 c6 |1 g7 m& ]9 A2 e2 T
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果% ~) m/ c6 s: Q, v% i) m. p1 f
select *   ^: e5 A; _. p# X" }
from (select t.*, rownum rn# B/ ^2 u8 H# Y; S* ^+ `9 \  T
        from (select ** e0 M; [2 J/ S, q
                from T_BASE_PROVINCE, u3 `7 N1 i4 s% H7 L' p. G0 m
               order by id asc) t" Z( O; v3 e9 q
        where rownum <= 20)8 Q6 n( f: \" B* [: J$ X9 N& o3 |
where rn > 10;
! B! p9 r2 d. k& b+ X3 b8 xoracle如何实现分页9 e6 x. F9 B  P; i$ a% |
53 J  c5 M" ]. \
分页语句二:如果不需要排序,可以使用如下语句* z) o4 p8 }, l2 \- J: \. M
select a1.*
" i3 e0 t9 I8 Y% Gfrom (select t.*,rownum rn
" l- `+ R% W$ ?" U, w        from T_BASE_PROVINCE t 6 D  D# s/ T; s0 a$ ~
        where rownum <=20) a1
0 `7 p# a) p2 M  ~8 Ewhere rn >10;; Z/ O, E$ s; j. I
oracle如何实现分页0 j8 h2 m5 Z  |8 w7 w
6
+ x* N. S- K8 V$ _  l分页语句三:between and方式,性能没有上面的高,但写法简单5 G. `7 y& y8 `" x' w% \- {
select a1.*
( }( ^. P) g" n* V( vfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 ; P- O' i! S; k- I# d) y
where rn between 11 and 20;4 q/ d& P4 Y7 @3 ?
oracle如何实现分页' C9 j3 l# k* W# h* Q2 _
7
$ A9 V. ~/ @! u通用分页格式,page是页码,size是每页显示条数3 I4 C$ i! u& P/ n3 D* w" Z: l
select *
3 E2 {2 h  `+ {+ Mfrom (select t.*, rownum rn. M" ]' P/ \7 n1 i( G* q
        from (select *
% F1 t7 O3 z' F# T* V; u- l                from T_BASE_PROVINCE
  _+ K9 K, ^' h% Q3 P0 E) P( I               order by id asc) t
5 p' E; P3 C0 l* Y' r) R, }        where rownum <= page*size)
3 F- s8 G1 F3 u5 Ewhere rn > (page-1)*size;" e0 `' N3 ?1 i& c4 Z! n
. u: I" m% A, y/ }
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了