PLM之家PLMHome-国产软件践行者

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

[复制链接]

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

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

admin 楼主

2017-11-3 16:22:57

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

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

x
9 @7 ?7 A: e6 {
# F: u+ w( ]0 e9 e; v
使用oracle数据库查询数据时,每页展示数据有限,大部分情况下需要分页展示。如每页显示10条,一页一页查询出来。下面就来介绍下oracle分页实现
3 d# `& J5 T" X- F1; R$ R. r# e2 D2 ^" S* s3 H8 {
使用T_BASE_PROVINCE表作为测试演示使用,表字段如下! n( @( L$ p" h6 w$ H
ID        NUMBER(11,0)
/ v  G& l' ]8 {. ]PROVINCEID        VARCHAR2(6 BYTE)
  p; E) |# K4 [& ?9 BPROVINCE        VARCHAR2(40 BYTE)5 s- D$ }! e7 C2 }7 c
数据可以根据自己的需要,插入一定量的测试数据
. ]3 i8 Z* h7 j' [5 Woracle如何实现分页4 K# s% m$ X) q1 \7 f6 Y5 @  z
2
9 ?/ [$ C9 ]; [8 @2 |. D' E查询下总共数据量6 \) t1 Q5 [7 E0 r
select count(*) from T_BASE_PROVINCE;
- H& _& }9 o3 N5 H; q  L在分页的时候,一般会显示总页数,需要先查询总数据量得到总页数,总页数=总量/每页显示记录数
: v- i9 ^0 B% C$ y3 Z, T  o- Doracle如何实现分页
' L" a& R( E( j  R0 Z- {4 U3/ I: T8 f. g" \
前面的测试数据初始化完成之后,查询前20条大概有什么样的数据
/ j: F' G! t) p$ Z# {9 loracle如何实现分页
% I7 r& B, L' J6 a6 p4. e$ R5 h* F: @/ m% s- B! W- b
分页语句一:含order by排序,多一层嵌套,因为order by在select之后执行,不在里面写的话可能会出现不是预期的排序结果: ~6 j  ^# M* J" [
select *
2 P& m0 p0 y" }2 v' u& Dfrom (select t.*, rownum rn
% Q- _  w( z3 C, j5 A* J        from (select *
+ w  `5 D0 @, j- `, A                from T_BASE_PROVINCE% {8 t, |2 Y" s) e8 [
               order by id asc) t
/ f( J+ j7 Y8 N9 c9 O+ [        where rownum <= 20)
6 f7 G7 w5 t+ G- @/ p8 Zwhere rn > 10;
, P+ `/ J4 ]9 }/ M9 q. G( Roracle如何实现分页
  L- a, T" X# h- y" R3 t2 s  [54 Q- w- m1 e& M- C
分页语句二:如果不需要排序,可以使用如下语句
2 ?, h" K' {$ B9 b( B  Nselect a1.* 2 j1 x  `4 N: J( \
from (select t.*,rownum rn 0 z6 j6 f' r) B2 S! o" ?. }! y
        from T_BASE_PROVINCE t 0 M/ a; A6 t1 B) i% [: S3 z
        where rownum <=20) a1 ; p* `" `4 Y, y3 P; `
where rn >10;5 b4 Z: O$ R% J: }+ m8 a
oracle如何实现分页
: O0 b  D3 n; t6- x8 d! i* a3 J! Q" o; a: q" {
分页语句三:between and方式,性能没有上面的高,但写法简单/ n7 y0 p0 O) o5 Y- H
select a1.* ) b4 b8 u- w$ [6 f
from (select t.*,rownum rn from T_BASE_PROVINCE t) a1 + b% K8 i4 K$ ]) u- r7 [6 ?. v1 B8 b, b$ _
where rn between 11 and 20;0 z% V( i' I6 y& v+ z" u
oracle如何实现分页
) \7 C# m, P4 |. Y; q7( y( q! z  d/ B' k6 ~( o
通用分页格式,page是页码,size是每页显示条数  m) `% a' W# D5 s
select * 5 \1 r4 O5 z' l7 u
from (select t.*, rownum rn7 i& Z$ Y) D7 Z! E: t
        from (select *
; c: D; ~$ Q' x- {" ^. G- O                from T_BASE_PROVINCE
+ D# t9 a# l3 Y6 q3 e" p0 A  B5 Q7 C! {               order by id asc) t
# ?% Y$ J+ c9 [5 R. c; X        where rownum <= page*size)2 q: T3 l9 p: n8 f: c$ D4 |
where rn > (page-1)*size;
6 o1 w9 Z# A3 }5 a$ ]: V; R$ l
$ k  G" X7 `7 a9 j+ p/ a
上海点团信息科技有限公司,承接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二次开发专题模块培训报名开始啦

    我知道了