`
wingok
  • 浏览: 7909 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

oracle分页与rownum

阅读更多
oracle分页时,最常用的3层嵌套:

select b.* 
  from ( 
      --第二层:给定行号 
    select rownum r,a.* from ( 
      --第一层:排序 
      select * from 表 order by 字段 
    ) a 
    where rownum<=最大行 
)b 
where b.r>=最小行


最内层Select的用处:(rownum的生成时机)
引用

(4)rownum和排序
Oracle中的rownum的是在取数据的时候产生的序号,所以想对指定排序的数据去指定的rowmun行数据就必须注意了。
SQL> select rownum ,id,name from student order by name;
    ROWNUM ID     NAME
---------- ------ ---------------------------------------------------
         3 200003 李三
         2 200002 王二
         1 200001 张一
         4 200004 赵四
可以看出,rownum并不是按照name列来生成的序号。系统是按照记录插入时的顺序给记录排的号,rowid也是顺序分配的。为了解决这个问题,必须使用子查询
SQL> select rownum ,id,name from (select * from student order by name);
    ROWNUM ID     NAME
---------- ------ ---------------------------------------------------
         1 200003 李三
         2 200002 王二
         3 200001 张一
         4 200004 赵四
这样就成了按name排序,并且用rownum标出正确序号(有小到大)

其他说明:
引用

rownum是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值。

强调一下,这个结果集是select后加上where条件所得到的结果集,不包括用order by排序,所以如果你想对排序后的结果使用rownum的话,应该使用嵌套查询,先把rownum生成,再对它进行查询:

select * from (selet rownum as rn,t1.* from a where …order by …desc) where rn >5
分享到:
评论

相关推荐

    ROWNUM的使用技巧

    oracle 分页查询 使用ROWNUM技巧及陷阱

    对于 Oracle 的 rownum 问题

    对于 Oracle 的 rownum 问题,很多资料都说不支持&gt;,&gt;=,=,between...and,只能用以上符号(&lt;、、!=),并非说用&gt;,&gt;=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来...

    Oracle中使用Rownum分页详细例子

    主要介绍了Oracle中使用Rownum分页详细例子,本文将分别展示使用rownum伪列和row_number()分析函数来完成Oracle数据分页操作的具体使用方法,需要的朋友可以参考下

    oracle 分页语句

    select * from (select a.*,rownum rn from (select * from tablename) a where rownum) where rn&gt;2

    oracle rownum 学习

    内涵oracle rownum的详细讲解。

    asp.net使用oracle分页存储过程查询数据

    功能说明 写好oracle的连接字符串和查询语句,调用程序中的方法可以很方便的实现分页功能。该方法中,将参数连接字符串,查询的sql语句,... 效率不是很高,如有高人写出很厉害的分页存储过程,希望您与大家分享。

    oracle 使用rownum的三种分页方式

    rownum是Oracle数据库中的一个特有关键字,返回的是一个数字代表记录的行号。这篇文章主要介绍了oracle 使用rownum的三种分页方式,需要的朋友可以参考下

    Oracle中使用伪列rownum实现分页查询

    伪列rownum rownum是查询返回的结果集中行的序号,可以使用它来限制查询返回的行数 从emp表中查询薪水排在前三位的记录 select * from( select * from emp order by sal desc ) where rownum&lt;=3 结果如下: ...

    Oracle Rownum的使用与JSP分页显示的实现.pdf

    Oracle Rownum的使用与JSP分页显示的实现.pdf

    oracle的分页查询

    使用数据库时有时我们会需要分页查询,但是在oracle中使用查询条件时又不可以使用大于号&gt;。

    Oracle分页查询的实例详解

    Oracle分页查询的实例详解 1.Oracle分页查询: SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM tab) A WHERE ROWNUM &lt;= 40 ) WHERE RN &gt;= 21; 这个分页比下面的执行时间少,效率高。  2. ...

    Oracle分页查询性能优化代码详解

    对于数据库中表的数据的 Web 显示,如果没有展示顺序的需要,而且因为满足条件的记录如此之多,就不得不对数据进行分页处理。常常用户并不是对所有数据都感兴趣的,或者大部分情况下,他们只看前几页。 通常有以下...

    oracle分页操作

    ROWNUM 和RN &gt;= 21控制分页查询的每页的范围。 上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE...

    oracle rownum 使用技术.pdf

    oracle rownum 使用小技巧 里面包含分页

    PHP实现的oracle分页函数实例

    主要介绍了PHP实现的oracle分页函数,结合实例形式分析了PHP针对oracle数据库使用rownum代替MySQL中limit实现的分页操作相关技巧,需要的朋友可以参考下

    oracle一条sql语句分页

    oracle 中没有像其他数据库那样用top来实现分页,但oracle提供了rownum 通过它也可以实现分页方法。

    oracle的rownum深入解析

    本人最近在使用oracle的rownum实现分页显示的时候,对rownum做了进一步的分析和研究。现归纳如下,希望能给大家带来收获。 对于rownum来说它是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第...

    简单实例解释Oracle分页查询

    什么是分页查询 分页查询就是把query到的结果集按页显示。比如一个结果集有1W行,每页按100条数据库。而你获取了第2页的结果集。 为什么要分页查询 ... ( select rownum rn, e.* from ( select * from

    Oracle数据库分页的集中方法(三种方法)

    在 做项目中用到了分页,下面说一下oracle分页的方法; 采用伪列 rownum  查询前10条记录 [sql] select * from t_user t where ROWNUM (大于1的数值)、&gt;=(大于或等于1的数值)、=(大于或等于1的数值),否则无...

Global site tag (gtag.js) - Google Analytics