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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x

6 O4 X/ x! f3 F: `3 w" W
; |: v; j: R0 r2 E! F+ [/ `# K使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现$ ~5 _9 a. \, \- j8 n; Z: n! k
13 a: }2 f) _  _5 D, N7 m8 D8 Y' z- L
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
# J; l# p6 I$ l4 W8 vID        NUMBER(11,0): p5 |/ g5 h9 r1 s% I
PROVINCEID        VARCHAR2(6 BYTE)* ~5 W+ p9 ~2 |$ H9 r' Q, |
PROVINCE        VARCHAR2(40 BYTE)3 j& L1 k1 G) b0 q, r" G( l
数据可以根据自己的需要,插入一定量的测试数据
! \% S* {: f3 D7 coracle如何实现分页
; t* V: b" a: M) Y2
) r9 U" T' ?! P8 i5 y) ]查询下总共数据量+ u' |$ m" D+ F) w3 Y/ j+ z
select count(*) from T_BASE_PROVINCE;$ j6 s9 y5 l" P5 w* A7 M, C
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数5 X- T8 ^; o3 _6 X% F
oracle如何实现分页4 W8 o' R% x" w4 V, A$ |
3
) ?2 h% g* Y% w+ x前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
* d! R" i( S: t( X5 C  }& Xoracle如何实现分页& q8 `. p6 }- p) O
4% q7 t, A& i0 W" o, F& N
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
, M# f3 T+ }7 N& @$ Xselect *
  W6 l2 X; O% J! B) \" `' k+ Dfrom (select t.*, rownum rn& o6 F& ]8 u- {* a/ m% b0 l9 i
        from (select *
% B; O# Z1 w6 B  @0 v                from T_BASE_PROVINCE1 ^2 v- A2 c) g& a
               order by id asc) t
/ e" L" D5 [4 ^- `* |+ f        where rownum <= 20)
* }1 j9 y9 V0 t9 O0 {where rn > 10;
5 O. w) U2 i9 j6 J% boracle如何实现分页
- f  G+ z! e: b/ o) ~- S5
/ \$ C4 g- p+ _( l  C2 K" ~: S; l& {分页语句二:如果不需要排序,可以使用如下语句
  a4 {8 D( l8 v9 Iselect a1.*
2 [! [7 ~. P. u1 Rfrom (select t.*,rownum rn
* B# H0 B& c- w: ~        from T_BASE_PROVINCE t & B( l; P! \; |. f' B8 R0 K
        where rownum <=20) a1
' y! r* d" I4 \6 J% o1 E- {% dwhere rn >10;3 j2 y- c* J4 ?" x
oracle如何实现分页( o* N$ @* |4 Z! L2 m
6
3 d3 {/ h4 o% ?7 ~分页语句三:between and方式,性能没有上面的高,但写法简单/ J2 n+ {' i( f6 K: f( z
select a1.* ; I+ C* Q7 I' q+ X# Y
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
4 Y/ o* E" o6 X, @4 Nwhere rn between 11 and 20;
2 X/ o5 k" P' J1 c# T6 J1 woracle如何实现分页' ?1 c( M/ ^2 u4 T1 s
7  s9 u. y# G( \+ x
通用分页格式,page是页码,size是每页显示条数& b# `9 l5 b& }. j% |  A6 V
select *   X/ \2 I9 K; c$ U
from (select t.*, rownum rn+ M  Y; _4 l* [$ W8 K3 \, N( R" l
        from (select *( f+ R6 _$ i9 V  B3 K
                from T_BASE_PROVINCE! c( \, t( c! \. H. P
               order by id asc) t
: C. ]% s# {! B8 ]2 h% X        where rownum <= page*size)- m" ]1 T& v+ W) \2 V. x/ v" L
where rn > (page-1)*size;8 @  [9 [" J3 M) E( C
# a1 D, h6 @3 w" Z$ O% [
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了