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

来源:互联网 发布:js currenttime 没用 编辑:程序博客网 时间:2024/04/29 11:12

工具/原料

  • oracle数据库服务端
  • pl/sql developer
  • windows操作系统

方法/步骤

  1. 1

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

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



  2. 2

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

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

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

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



  5. 4

    这样是查不到数据的,因为oracle对于rownum的分配是这样的:显示获取内层查询结果集,再根据筛选条件,对其分配rownum,从1开始,如图所示,在获取所有数据后,给第一条数据分配rownum为1,由于1<2,所以这条记录剔除,下一个再分配为1,再剔除、、、所有的记录都不会保留;

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


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

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

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

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

0 0
原创粉丝点击