您的位置首页百科知识

oracle分页查询过程的简单实现

oracle分页查询过程的简单实现

的有关信息介绍如下:

oracle分页查询过程的简单实现

首先选择一张表,最好是独立的表,由于此次操作只涉及到查询,所以也可以使用其他表的字表或者父表,若当前用户下没有任何表,在当前用户有权限的前提下创建一个表,并导入少量数据,示例所用的表结构和数据

第一步,先找出1-最大范围的所有信息。需要注意的事项有:完全查询部分(即select * from test)要取别名;rownum要取别名(至于为什么后面再说)

有一个经常提到的问题就是:为什么要先查询小于或者小于等于的?不能先查询大于某个界限的呢?

这样是查不到数据的,因为oracle对于rownum的分配是这样的:显示获取内层查询结果集,再根据筛选条件,对其分配rownum,从1开始,在获取所有数据后,给第一条数据分配rownum为1,由于1

到这一步,我们已经获取到了前5条记录,那么如何获取3-5的记录?只需要在外层添加一层select语句即可。

需要注意的是,在外层查询的筛选条件需要使用内层的rownum的别名而不是使用row,这就是为什么在第二步强调要取别名的原因了,因为如果不使用内层rownum的别名,外层查询会重新分配rownum,而外层条件又是">=3",所以就会像第四步一样,取不到任何数据。

方法/步骤2

第二种方法就是使用 row_number() over(partition by para1 order by col1[col2])这个函数,查看详细介绍请点击连接http://jingyan.baidu.com/article/b2c186c82c4f50c46ef6ff1b.html,

将select row_number() over (order by id )rank ,a.* from (select * from test) a; 当做一个视图,此视图包含test表的所有列和行序号,即别名rank

检索这个视图,筛选条件就可以直接写在where 字句即可完成筛选