你的位置:首页 > 数据库

[数据库]Oracle中经典分页代码!


在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 stuInfo order by stuno desc) stu where rownum<=4) where rn>=2;STUNO STUNAME         STUAGE   STUID  STUSEAAT     RN------ -------------------- ---------- ---------- ---------- ----------15   李四             12 1.5666E+10     6     213   哈哈             15 5.9876E+15     5     31   66              10 5566554666     5     4

 这样就完成了分页查询了