A-A+

Oracle中经典分页代码

2016年08月03日 Linux 数据库 暂无评论 阅读 443 次

Oracle中因为没有top关键字,所以在sqlserver中的分页代码并不适用于Oracle,那么在Oracle中如何来实现分页呢?

--查询所有数据

STUNO  STUNAME                  STUAGE      STUID  STUSEAAT                                                                                                                                           
------ -------------------- ---------- ---------- ----------                                                                                                                                           
9      王五                        15 5.9876E+15          5                                                                                                                                           
13    哈哈                        15 5.9876E+15          5                                                                                                                                           
15    李四                        12 1.5666E+10          6                                                                                                                                           
1      66                          10 5566554666          5                                                                                                                                           
1      66                          10 5566554666          5                                                                                                                                           
1      66                          10 5566554666          5                                                                                                                                           
1      66                          10 5566554666          5                                                                                                                                           
1      66                          10 5566554666          5                                                                                                                                           
1      66                          10 5566554666          5                                                                                                                                           
1      66                          10 5566554666          5                                                                                                                                           
1      66                          10 5566554666          5                                                                                                                                           
1      66                          10 5566554666          5                                                                                                                                           
1      66                          10 5566554666          5         

比如说我要查询stuInfo表中第二到第四条记录

--两层嵌套分页

SQL> --两层嵌套分页
SQL> select * from (select stuInfo.*,rownum as rn from stuInfo where rownum<=4) where rn >=2;

STUNO  STUNAME                  STUAGE      STUID  STUSEAAT        RN                                                                                                                               
------ -------------------- ---------- ---------- ---------- ----------                                                                                                                               
13    哈哈                        15 5.9876E+15          5                                                                                                                                           
15    李四                        12 1.5666E+10          6                                                                                                                                           
1      66                          10 5566554666          5         

--如果我没有对原始表有其他的排序操作的话,两层嵌套就可以满足需求了,但是如果我有一个条件是必须先将学号进行降序排列,然后取第二到第四条记录呢?

那么就必须使用三层嵌套了

SQL> select * from (select stu.* , rownum as rn from (select stuInfo.* from stuI
nfo order by stuno desc) stu where rownum<=4) where rn>=2;

STUNO  STUNAME                  STUAGE      STUID  STUSEAAT        RN
------ -------------------- ---------- ---------- ---------- ----------
15    李四                        12 1.5666E+10          6          2
13    哈哈                        15 5.9876E+15          5          3
1      66                          10 5566554666          5          4

这样就完成了分页查询了

更多Oracle相关信息见Oracle 专题页面 http:///?tid=12

标签:

给我留言

Copyright © SEARU.ORG 保留所有权利.   Theme  Ality 网站地图 360网站安全检测平台

用户登录

分享到: