你所在的位置: 首页 > Oracle > OCP >
最新开班 班级 报名状态
9月25日 HCNA-Cloud Service 热招中
9月25日 HCNA-Cloud Service 热招中
9月30日 HCNA-R&S周末班 热招中
10月31日 HCNP-storage脱产班 热招中
10月23日 HCNA-storage脱产班 热招中
10月20日 HCNP-R&S脱产班 热招中
10月10日 HCIE-R&S脱产班 热招中
10月9日 HCNA-R&S脱产班 热招中
9月25日 HCNP-Cloud脱产班 热招中
9月18日 HCNA-Cloud脱产班 热招中
  • 博赛网络ICT就业班热招中
  • 博赛推出Oracle OCM实战课程

Oracle分页查询的三种方法

时间:2013-11-14 16:44 作者:Superthink 点击:

 Oracle分页查询的三种方法大至如下所示:

采用伪列 rownum

查询前10条记录

[sql]

select * from t_user t where ROWNUM <10;

按照学生ID排名,抓取前三条记录

[java]

SELECT * FROM(SELECT id,realname FROM T_USER ORDER BY id asc ) WHERE ROWNUM <=3

分页SQL写法,从第10条记录开始,提取10条记录。

[java]

SELECT * FROM (SELECT ROWNUM rn,id,realname FROM (SELECT id,realname FROM T_USER)WHERE ROWNUM<=20) t2 WHERE T2.rn >=10;

按照学生ID排名,从第10条记录开始,提取10条记录。

[sql]

SELECT * FROM (SELECT ROWNUM rn,id,realname FROM (SELECT id,realname FROM T_USER ORDER BY id asc)WHERE ROWNUM<=20) t2 WHERE T2.rn >=10;

【注】

1. where rownum>1 不能抓取到记录。

2. where rownum between 2 and 10 也不能抓取到记录。

运用分析函数

用分析函数row_number()over(ORDER BY 字段)

按照学生ID排名,抓取前三条记录

[sql]

SELECT * FROM(SELECT id,realname,row_number()over(ORDER BY id asc) rn FROM T_USER)WHERE rn <=3

按照学生ID排名,从第10条记录开始,提取10条记录。

[sql]

SELECT * FROM(SELECT id,realname,row_number()over(ORDER BY id asc) rn FROM T_USER)WHERE rn BETWEEN 10 AND 20

运用minus方法

从第10条记录开始,提取10条记录。

[java]

SELECT * FROM T_USER WHERE ROWNUM<20 MINUS SELECT * FROM T_USER WHERE ROWNUM<10;

按ID排序后,从第10条记录开始,提取10条记录。

[sql]

(SELECT * FROM (SELECT * FROM T_USER ORDER BY id asc) WHERE ROWNUM<20) MINUS( SELECT * FROM (SELECT * FROM T_USER ORDER BY id asc) WHERE ROWNUM<10);

(责任编辑:Superthink)

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)