NX插件
送教程
DoTeam
培训报名
AI · CAD · PLM
首页
Portal
社区
论坛
NX技术
TC技术
Catia技术
自研系统
更多
登录
NX Toolkits 「PLM之家插件」
Castsim「铸造PLM系统」
EchoCAD「大模型CAD」
视频在线
实践教程
前沿咨询
高清购买
国产软件
PLM之家PLMHome-工业软件践行者,大模型驱动工业生态建设
»
社区
›
PLM之家-站务管理
›
PLM之家-开发资源
›
Oracle 实现分页查询!
返回列表
发新帖
查看:
3464
|
回复:
0
[转载电子书]
Oracle 实现分页查询!
[复制链接]
admin
admin
当前离线
积分
60
6
主题
4
回帖
60
积分
管理员
积分
60
发消息
发表于 2017-11-3 16:22:57
|
显示全部楼层
|
阅读模式
请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!
您需要
登录
才可以下载或查看,没有账号?
注册
×
) c$ b" l7 y1 K! j) T3 h0 }
, Z! z& u1 k7 y: J: s3 J; [5 Q
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
. g) }1 s/ t8 _/ b
1
# Y5 _# d9 A/ F5 `
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
6 L! Z; ~3 d( h& N! ~
ID NUMBER(11,0)
% M- O" |7 E# ]$ |6 p
PROVINCEID VARCHAR2(6 BYTE)
: B1 ?3 m {% m+ d% \8 b- F
PROVINCE VARCHAR2(40 BYTE)
5 F- h" r; G4 i5 t; t( r
数据可以根据自己的需要,插入一定量的测试数据
8 y7 L; V% I7 b0 {; e- S6 w
oracle如何实现分页
$ F9 A+ a. p$ V
2
2 E- c% w% Z' p* j& e& r) Y
查询下总共数据量
: `' v$ @. e+ {9 h& N4 R
select count(*) from T_BASE_PROVINCE;
% d9 M$ g! `5 v) ] l
在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
( M; C: f% }) k- q
oracle如何实现分页
" w% o5 J, B7 L; T2 p
3
) r3 ?9 j2 S# q4 X# n+ ?
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
1 I6 \. s# S1 r& v5 T" N& d
oracle如何实现分页
9 i) @9 j r2 z
4
4 U! K$ o6 K( T! ~" g
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
$ s$ O% L1 C- f8 N0 F& a
select *
- m+ ~' v, @' ? W
from (select t.*, rownum rn
, O9 H4 l9 J2 D' g6 A$ h$ R+ z t M
from (select *
* h `7 e0 Z% G& {6 X% L- `
from T_BASE_PROVINCE
9 v1 p$ x9 V4 n& H$ d# j* m
order by id asc) t
# @% Q% T4 D* ?8 x7 o' P/ Z
where rownum <= 20)
/ t. o8 r1 s4 _2 y Z0 T% V
where rn > 10;
: ^% U$ Y2 M1 F) B# Z9 t
oracle如何实现分页
% e7 E4 _7 h. V( ^
5
" f. \: V" D$ A
分页语句二:如果不需要排序,可以使用如下语句
% f$ k. T% F( h/ m* @
select a1.*
, p2 ^6 o1 `# K2 `% @8 S0 j
from (select t.*,rownum rn
( x& }; U/ n+ R+ J
from T_BASE_PROVINCE t
, F1 ^4 g$ y- n3 d3 n! J* m! h
where rownum <=20) a1
/ Q$ R2 W' [7 |: x7 q
where rn >10;
) y! d3 X/ {- ?* W% E% q1 [
oracle如何实现分页
# Q# O# t) u0 n# @: |' T8 Z
6
* Z3 J4 m# F5 t C* _# S1 i
分页语句三:between and方式,性能没有上面的高,但写法简单
/ v! B3 q% G% `) `5 q2 |- k
select a1.*
8 c0 C) \0 W' F
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1
5 U# H0 |4 X* [5 B: | u
where rn between 11 and 20;
1 b) f2 s+ c7 i k
oracle如何实现分页
9 Y& m/ ^2 a" J5 z9 J+ @ h3 n6 n
7
" I% k5 S; T) `7 L; Z' Q: h6 v
通用分页格式,page是页码,size是每页显示条数
1 [) u# W& }# O3 x' I
select *
8 v* Q9 S; c" }& l
from (select t.*, rownum rn
9 V9 o) H' i( K) b! b
from (select *
9 J7 y8 _' p2 m- M; S8 ]' [/ b
from T_BASE_PROVINCE
2 h) Z6 d) R& o2 S4 w' v
order by id asc) t
/ l" r' u4 {8 I
where rownum <= page*size)
1 Z, o$ o6 ?' ^1 F4 Z4 U
where rn > (page-1)*size;
3 A% a8 w' ?# T3 _
/ U; R# b& \; C! G5 Z" p6 E
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复
使用道具
举报
返回列表
发新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
在本版发帖
关注公众号
QQ客服
返回顶部
快速回复
返回顶部
返回列表