ORACLE SQL分页查询

开发工具与关键技术:Oracle sql*plus PLSQL Developer
作者:邓婵
撰写时间:2019年 4月 14日

有时候我们查询信息发现数据太多或者有一些是你不需要的,这时我们可以通过分页把你所需要的信息提取出来,这样就更方便我们观看,更加清晰了然,下面让我们来看看例子

例1:查询成绩最高的前三名

select rownum,e.* from(select cno,score from sc order by score desc)e
where rownum <=3

rownum 是对符合条件结果的序列号只能使用 < 或 <=查询前几名,不能从结果集当中查询两排名之间的信息
显示结果如下:
ORACLE SQL分页查询_第1张图片

例2:查询成绩最高的前三名到前五名

select* from(select rownum r,e.* from(select cno,score from sc order by score desc)e)
where r>2 and r <6

例2则可以查询两排名之间的信息,因为rownum是对结果集加的一个伪列,所以先查到结果集之后再加上去的一个列,然后从结果集当中查询两排名之间的信息
显示结果如下:
ORACLE SQL分页查询_第2张图片

例3:查询各科成绩前三名的记录:(不考虑成绩并列情况)

select * from 
(select sno,cno,score,row_number()over(partition by cno order by score desc) rn from sc)
where rn<4

显示结果如下:
ORACLE SQL分页查询_第3张图片

你可能感兴趣的:(ORACLE SQL分页查询)