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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x
6 q( o9 G* h# {9 w2 l. e8 `

& _: _  _5 V; |8 `使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现9 V- E( M& v6 K, p: H7 t7 P+ `, p% V) P
1
) ]/ ^  S7 f3 A6 W0 V5 K使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
1 Y% x3 n- r0 A5 SID        NUMBER(11,0); K5 l7 L1 ?! A; P- b0 ?
PROVINCEID        VARCHAR2(6 BYTE)/ T+ Y0 L& Q, Q( z( |( J5 g
PROVINCE        VARCHAR2(40 BYTE)5 M' k7 v  {( B" G
数据可以根据自己的需要,插入一定量的测试数据
; p; c( m! F- Xoracle如何实现分页4 a- {6 z* }+ k% k4 Z5 h5 [
2% R, y* `0 A; z4 ^
查询下总共数据量
9 D, y+ m9 o: I" Uselect count(*) from T_BASE_PROVINCE;
- g& s0 Q5 o7 l, }9 W$ x, x  W在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
! \$ u. S) L" w8 g; a6 y- F2 Zoracle如何实现分页& t0 I0 e3 {; K/ l! l4 ?3 R4 Z
3
6 r* U8 V8 J& J; A" P) o前面的测试数据初始化完成之后,查询前20条大概有什么样的数据' O& [2 ^' O& Q* a6 ~; F4 p
oracle如何实现分页7 ?/ x: b& v1 ?5 i" f
4# A. L# Q: s- |' `
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果7 X4 X" d7 G0 G$ B9 p- [/ e& Q
select * , g5 I+ v9 W2 r+ M+ v$ G
from (select t.*, rownum rn
, p4 Z" e% b2 G8 Z2 k, s" {        from (select *3 d' Z6 ^, Z8 t" |
                from T_BASE_PROVINCE
7 O1 M6 Z  {+ G4 W               order by id asc) t, h1 G% e* N3 f! u- {; l) Z
        where rownum <= 20)
, l3 E1 }+ \9 y3 P* L2 l* _" jwhere rn > 10;
% @) J; l" i' [' d+ t8 Boracle如何实现分页
+ {( s/ f4 h& I5" n9 X8 Y7 X3 p, h9 B
分页语句二:如果不需要排序,可以使用如下语句
: ^9 F5 v' U! {  hselect a1.*
2 U; s+ L3 e/ o) v( ^from (select t.*,rownum rn $ p; x6 f3 T9 r! P
        from T_BASE_PROVINCE t ( H7 H4 Q/ D. l, a  U* [. K6 ?
        where rownum <=20) a1
! D% }$ d! [$ |" E7 ]) L8 \where rn >10;
  {! [9 M" D6 n" _1 k' ]! Xoracle如何实现分页
* k- D  Q, N. D3 A% h- h' n2 `64 K/ @  d9 ^$ ?& r" V( t) }$ L
分页语句三:between and方式,性能没有上面的高,但写法简单- U8 }/ }( v) ^! W* t  g5 k7 M
select a1.*
+ D! w) f* U. \4 A, mfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1
0 F) C+ w+ H+ {+ j& Q# W. [" ywhere rn between 11 and 20;2 }' Z5 x6 R( L- ^& Z
oracle如何实现分页
. E5 I* G* V2 ~0 t8 ]$ B7% y7 e8 p$ |. y& l" j& n- L3 }8 d
通用分页格式,page是页码,size是每页显示条数
6 t! D- y6 e8 l1 I4 }* H+ [select *
) q! d3 o8 v3 V) @! V$ I$ zfrom (select t.*, rownum rn
6 N6 D1 F! A; @. ~1 p" |        from (select *
9 J% ?$ [5 K. j                from T_BASE_PROVINCE5 D, h6 ?/ B0 _; W/ B' G4 Y
               order by id asc) t6 P% ^# e5 C+ x3 a
        where rownum <= page*size)
* w2 P4 g2 {9 @; }where rn > (page-1)*size;
( `! A' H7 i' a0 z. O5 N8 H$ e  q- H# a  [9 D! a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了