查看: 3403|回复: 0

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

[复制链接]

6

主题

4

回帖

60

积分

管理员

积分
60
发表于 2017-11-3 16:22:57 | 显示全部楼层 |阅读模式

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

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

×
! x% D3 ^9 i% z! H; N

8 {2 f& }5 b' V- f" k. @9 Q使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现  X) k7 V4 }& x8 _/ u$ r, H
1
& v! }4 J, z. v5 C使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
7 u+ C9 P+ A& n# ?  F. RID        NUMBER(11,0)! o5 k, s& r; i; s
PROVINCEID        VARCHAR2(6 BYTE)
$ e* K  r4 T) \# HPROVINCE        VARCHAR2(40 BYTE)/ Z  r+ [; Q8 W4 a. f- [  C# T
数据可以根据自己的需要,插入一定量的测试数据* e# O# l) A, [9 F5 Y
oracle如何实现分页, B+ r% l& V8 J: j8 ?) W6 b
2! _4 [! g7 d. G/ Y
查询下总共数据量  G; P8 t9 [) P
select count(*) from T_BASE_PROVINCE;
# S. r( r$ e6 e; R0 y在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数7 K% J4 I" l; f
oracle如何实现分页$ k% d, w6 P: T& l+ ^8 o
3
. j$ ?0 w5 y( Z7 `5 }3 `前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
# n, h8 P& H! ~, Horacle如何实现分页
3 k3 I8 k5 G! R" g4) p5 p6 U- \# e& h
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
" q, G0 y( a$ I  M* mselect *
" U. q$ X& A- F+ |6 }( Q2 \from (select t.*, rownum rn
- b# J/ a9 R" p        from (select *6 G4 ?, ]6 b( I, z" r. B6 h
                from T_BASE_PROVINCE
  q2 ~7 n& r( J" l               order by id asc) t2 @# P, m4 K- a1 X
        where rownum <= 20)1 V, }! [* T5 N) H8 J2 A. g4 h
where rn > 10;' u, C" F$ ]# s2 f
oracle如何实现分页
9 S3 V3 r% U2 O) ^+ J5
6 D2 c/ U( a3 u4 U分页语句二:如果不需要排序,可以使用如下语句, h6 M+ d% P9 V* l  Z& W
select a1.*
! R" r& u8 O+ {  Wfrom (select t.*,rownum rn - ]1 o7 p4 F3 D) \) I. }% C
        from T_BASE_PROVINCE t
% e, @. R& E8 y) c0 E$ F! [        where rownum <=20) a1 $ y3 _5 P; F5 U5 q0 ]
where rn >10;6 J9 k3 A0 k" P! M) F' a
oracle如何实现分页2 Z/ }0 T! ?: r4 f$ o' V* o
6
/ C' o9 u5 q$ S: H分页语句三:between and方式,性能没有上面的高,但写法简单7 x) F8 s5 ?7 ]+ N, H
select a1.*
2 e+ l, H. [' A2 sfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1 " K3 W% G3 `* @! E3 {8 T
where rn between 11 and 20;
' R+ X5 L$ |2 poracle如何实现分页
- O: d! b, t, L7
% [  z& s- n0 s. D通用分页格式,page是页码,size是每页显示条数9 ?" \/ I# k6 U$ s! p2 B
select * 0 G% m, T2 }' a1 g6 }9 ?+ W
from (select t.*, rownum rn
5 Q* J+ M% x" n) P        from (select *1 t7 J4 B  C0 v% r9 F" n
                from T_BASE_PROVINCE
4 T$ ~! C4 x& k$ M2 C! F               order by id asc) t
9 m& U6 `6 S0 Z- |        where rownum <= page*size)4 N5 |2 X9 ?7 u4 Q* K9 B2 L
where rn > (page-1)*size;/ W8 v% N6 K& t( z4 J7 P
. t7 h- V3 J! F5 H
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.doteam.tech
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

在本版发帖
关注公众号
QQ客服返回顶部