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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x
/ a2 f/ c  C7 n' z/ ^
" Z6 T, z/ z! A1 N9 L# j1 O9 S$ e
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现" a' d! Z( n. t
1* j, @1 v( f* V4 ~. z
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下% E, Q) E: U% d' R# @1 ]
ID        NUMBER(11,0)2 U6 S4 b# L3 f" l% d8 K
PROVINCEID        VARCHAR2(6 BYTE)& V4 t/ Z! V0 y& z
PROVINCE        VARCHAR2(40 BYTE)
7 t/ W% ~" Q( N# n; q数据可以根据自己的需要,插入一定量的测试数据
6 G$ m7 S' V" R9 aoracle如何实现分页1 k; C' _$ G. s$ l( R) R+ [3 j, d  c
2
! ?% G3 P7 X; g+ L0 b查询下总共数据量# v4 H! j( i. L
select count(*) from T_BASE_PROVINCE;
0 k; M- _5 i) A( w在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
8 |7 Z% \- I. X2 l0 Voracle如何实现分页
: v9 e% U1 g2 h- ~6 u3
% D8 {  r$ u# x' G0 h7 }前面的测试数据初始化完成之后,查询前20条大概有什么样的数据; I$ g; p/ q8 S% \
oracle如何实现分页/ o# E$ A$ K3 z7 ~) ^9 U
4' z+ \/ O3 O$ M: A9 V& }( p$ Q
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果3 d) f" e$ J$ ?2 f, r8 E5 I0 |
select * . e7 O" V' Q$ y; c3 K
from (select t.*, rownum rn
! h% D" u8 n! k1 d        from (select *) K* D% y$ `5 _/ f% d% P
                from T_BASE_PROVINCE; j5 q" u$ M# W1 ]& z" K
               order by id asc) t
( p, Z. d! `, a5 `7 p  j7 o        where rownum <= 20)0 k* m* q; d' ]  V9 K
where rn > 10;
& H. T, |, y; N4 ]' foracle如何实现分页2 w, Z/ T. d' @" g! ~9 w* [
5
  K, b2 c; \: S( e分页语句二:如果不需要排序,可以使用如下语句
7 c" s, b% W) P1 E( k& rselect a1.*
7 @2 R1 t! j" w4 b0 Y3 d  Xfrom (select t.*,rownum rn 8 f& V+ G. s, [6 J+ a( a- C$ a7 ]
        from T_BASE_PROVINCE t
& \: x* u2 J  O4 Z        where rownum <=20) a1
: d& t- k5 O3 F( C8 H3 Dwhere rn >10;: s! J' E5 Q: R' q, W% n1 o
oracle如何实现分页0 L$ P5 Z. g2 [' F
6. h) {1 l5 ~4 i4 B1 p( V$ D' J
分页语句三:between and方式,性能没有上面的高,但写法简单8 y1 R+ q' S7 C7 q
select a1.* ! M- V- v8 h* ^# c
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 / P! k! ]& w3 |% W, o, E: @" |
where rn between 11 and 20;! R9 t) j$ {+ C  K
oracle如何实现分页( }4 A6 k: u* f. U* Y
7
9 [8 o; h- `5 p通用分页格式,page是页码,size是每页显示条数- D4 `' c6 J) X# k
select * ; W# e9 D8 ], C9 A  O9 {, N9 `
from (select t.*, rownum rn; d$ Y* q2 A, T
        from (select *
3 k* e$ V1 r7 o. H3 @                from T_BASE_PROVINCE0 V$ M5 J& ^1 z: Z$ I
               order by id asc) t# f4 Q8 {5 x, D. W0 C& |5 D
        where rownum <= page*size)
7 A) y/ |& M+ B) m+ r, Rwhere rn > (page-1)*size;9 a% w; a& _8 L1 m

( h3 j* Q% o: f
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了