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

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x

8 b0 e0 }- u- Q1 j: \" ~9 j' C8 Z& R: U& O, B4 I8 `& O: z
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
( Y# \+ e+ u; Y" c/ z6 C! t, d  ~. O1
6 h6 y$ H# F$ n& o) ~0 b使用T_BASE_PROVINCE表作为测试演示使用,表字段如下
( I" C) [8 l* F/ [6 K# hID        NUMBER(11,0)
4 P" j! c+ }, B) }PROVINCEID        VARCHAR2(6 BYTE)8 n0 c0 x% p6 h+ C/ V
PROVINCE        VARCHAR2(40 BYTE)5 v) c8 }  Z9 L/ {
数据可以根据自己的需要,插入一定量的测试数据. X" J; {0 }7 p" r9 C* ^
oracle如何实现分页
+ H  |" u7 T* @% P, j/ v29 x/ @% o* F, r/ A/ j
查询下总共数据量0 i9 ~5 M9 O" S! I. j- I
select count(*) from T_BASE_PROVINCE;
; N: W8 j# J: c在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
  q% w: a2 V: w  A$ N* x+ [. R: Horacle如何实现分页" S- c  s1 M3 h3 U) T  g& D
3
1 @7 _( _3 Z: d6 w* g5 }$ _' v前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
9 X$ T* o7 V; {, f6 d6 xoracle如何实现分页
9 ~' C; p! f5 a2 V2 f) ^: G4! i' m) S9 I+ P4 j3 f
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果
$ p8 A. F) K( s8 K- }% z5 \select *
8 [  G& s+ Z' q. ffrom (select t.*, rownum rn6 B" t, @( ~6 m/ N8 H% H& a5 r+ k
        from (select *
4 Y8 e5 p6 p* d/ ?5 f" m1 X' T                from T_BASE_PROVINCE1 Q% e6 m/ x! x6 Z
               order by id asc) t: ]. n- p6 X) m) @* l; e, W
        where rownum <= 20)% J  l! G# P7 j% h6 p, C0 J' o4 x2 w4 p
where rn > 10;2 v* k  \0 q$ o& t
oracle如何实现分页6 f" R' S$ U2 J$ k6 o
5. E4 e. D# w, T, E
分页语句二:如果不需要排序,可以使用如下语句
, i' C% u$ K- w& b+ Eselect a1.* # O* `' e. C8 m8 T" n
from (select t.*,rownum rn 9 S) b  _: Y! U* |8 t( r. w6 O" q
        from T_BASE_PROVINCE t 2 u( a. u! w3 K3 ~3 P" I# n6 h
        where rownum <=20) a1 & m6 ~/ d! I/ Y% Y3 h6 I% v) Q
where rn >10;
) y' v) @" d  voracle如何实现分页) l2 j7 J1 q" ~, ]
6
. D1 x( B+ t! x- ^分页语句三:between and方式,性能没有上面的高,但写法简单  J4 {4 v/ m: o  L
select a1.*
+ e3 j# R( ^7 [' M# Xfrom (select t.*,rownum rn from T_BASE_PROVINCE t) a1   h! n# j9 U2 K3 o  l0 `/ |0 q0 ]2 c
where rn between 11 and 20;
0 L# a& [9 b8 k' {8 m2 M6 H" toracle如何实现分页' Z0 O7 K- m5 [
71 o5 M8 k4 y# O4 o" \
通用分页格式,page是页码,size是每页显示条数
7 S$ ~; w  Q" s  S7 jselect * 3 M2 C! y+ d& u2 z8 A
from (select t.*, rownum rn: R$ f' q% k8 n
        from (select *
& B  `+ F! ~4 K  t) Q9 [                from T_BASE_PROVINCE
' P- Y9 y" |" ^# p: m) J# z# ]7 I               order by id asc) t
; A: f3 k% z$ P* d. Z        where rownum <= page*size)% _& U$ j7 k9 E  N# b- r1 j6 s
where rn > (page-1)*size;' X) X) k- S: B* Y. o3 M$ f

2 x% m1 }% T: J! Z$ I+ J5 q
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了