zoukankan      html  css  js  c++  java
  • Oracle分页查询与RowNum

    1. RowNum伪列

    Oracle中,RowNum是一个伪列,表示当前记录是查询结果集中的第几条。

    RowNum在使用上应该注意,不能在where条件中用RowNum大于、大于等于、等于某个大于1的数,这样是无意义的,因为结果集的第一条记录的RowNum必然是1,不可能大于1,所以以下几条SQL都是错误的,是不可能有结果的:

    1 SELECT * FROM student WHERE RowNum>1;
    2 SELECT * FROM student WHERE RowNum>2;
    3 SELECT * FROM student WHERE RowNum=2;
    4 SELECT * FROM student WHERE RowNum BETWEEN 1 AND 60;

    2. RowNum实现分页查询

    那么如何实现分页查询呢?我们可以给RowNum起个别名,通过两层循环来实现

    1 SELECT id from (select id, RowNum rn from student where RowNum<=30)  WHERE rn>=21;

    以上例子实现了查询第21条道第30条的所有数据。

    有个疑问,SELECT id, RowNum rn FROM STUDENT WHERE rn BETWEEN 21 AND 30;是否可以?答案是不可以,因为RowNum的别名rn只能在外层循环里用,在本层循环里只能用RowNum,不能用别名rn,这条语句会编译报错。

  • 相关阅读:
    看见一个希腊字母表
    剑桥的技术报告列表
    CompaqDEC的技术报告
    linux动态链接库的使用
    Vectored I/O or ScatterGather I/O
    week reference
    Cache pingpong
    [zz] References on Mutual Excuslion
    redis: event loop
    看WinForm源代码的笔记
  • 原文地址:https://www.cnblogs.com/james6176/p/3526815.html
Copyright © 2011-2022 走看看