`

oracle rownum Pseudocolumn

    博客分类:
  • db
阅读更多
(今天仔细查看了下 oracle rownum 的文档,整理了一下,当做笔记;)


ROWNUM Pseudocolumn

在查询结果中,ROWNUM 用于唯一标识查询结果记录,

------
rownum 的赋值

rownum 的赋值时间点在 记录查处之后,且在排序之前,
查询结果中每条记录的 ROWNUM 是唯一的,在记录查出后,rownum值 第条记录是 1,第2条是 2,依次类推,
如果查询语句使用了 order by 语句,那么 rownum 在赋值后,记录再按照 order by 语句排序,则最后查出的结果的顺序 跟 rownum 的排序 可能是不一致的,

在带有 order by 语句的查询中,如果希望最后查出记录的顺序 和 rownum 一致,则需要先排序查询,再从查询结果进行查询,即多了一层查询;

------
rownum 的使用

可以根据 rownum 限制查询记录数 或 分页,需要遵循 rownum 的规则,

rownum 的比较规则:
* <
        小于比较,按大小比较,等同于小学算术比较;
* =
        等于比较,只能和 1 进行等于比较,大于1的任何行都返回 false,
        因此只能使用 rownum = 1,对于 rownum = 2 是不返回任何记录的;
* >
        大于比较,只能大于 0 ,也就等同于没有限制,
        当和大于0的值进行比较时,都返回 false,不会查处任何记录;

* <=
        小于等于,相当于 < 和 = 的并集,等同于小学算术比较;
* >=
        大于等于,相当于 > 和 = 的并集,只能和 0,1 比较,即 >=0 或 >=1,相当于没有限制,这个是没有意义的;


------
> 和 = 比较操作:

如果希望像算数运算一样使用 > 和 = ,则需要先在查询中将 rownum 查出来,组成新的记录集,在新的记录集中存的 rownum 就变成了可以进行各种算数比较的数值,
再用1个外层查询从这个记录集中进行查询,这样外层查询就可以使用内层查出的 rownum 值进行各种比较了;

------
分页

分页查询总需要对 rownum 进行 > 和 < 比较操作,但是 rownum 本身的 > 比较 不支持大于1的比较,
因此需要先将 rownum 查出来,然后再外层查询对已查出的 rownum 值进行各种算数比较;

------
例子:
查询 abc 表的所有字段,每页10条,分别查: “不排序第1页”,“排序第1页”,“不排序第2页”,“排序第2页”

        -- 不排序,前10条
        select * from abc where rownum <=10;
        
        -- 排序,前10条
        select * from
          (select * from abc order by id desc) abc_order
        where rownum <=10;

        -- 不排序,11 - 20 条        
        select * from
          (select abc.*, rownum as row_num from abc where rownum <=20) abc_order
        where row_num >= 11;

        -- 排序,11 - 20 条        
        select * from 
          (
            select abc_order.*, rownum as row_num 
            from 
              (select * from abc order by id desc) abc_order
            where rownum <= 20
          ) 
        where row_num >=11;

------
分享到:
评论

相关推荐

    oracle rownum 的使用 和sqlserver有区别的!

    ### Oracle ROWNUM 使用详解与 SQL Server 区别 在数据库操作中,ROWNUM 是一个非常重要的伪列,主要用于返回查询结果的行序号。它在 Oracle 数据库中有着广泛的应用场景,尤其是在需要对查询结果进行分页显示、...

    对于 Oracle 的 rownum 问题

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

    oracle rownum 学习

    Oracle ROWNUM学习 Oracle ROWNUM是Oracle系统顺序分配的行号,用于限制查询返回的总行数。ROWNUM是一个伪字段,不能以任何表的名称作为前缀。下面是对ROWNUM的详细讲解: 一、ROWNUM的基本用法 ROWNUM是一个伪...

    oracle rownum和distinct

    "Oracle 中的 ROWNUM 和 DISTINCT" Oracle 中的 ROWNUM 和 DISTINCT 是两个非常重要的关键词,它们在查询数据时发挥着至关重要的作用。然而,许多开发者在使用这两个关键词时,却常常会遇到一些不太理解的地方,...

    ROWNUM的使用技巧

    ROWNUM 是 Oracle 中的一种伪列,它可以根据返回记录生成一个序列化的数字。利用 ROWNUM,我们可以生产一些原先难以实现的结果输出,但是因为它是伪列的特殊性,在使用时需要注意一些事项,以免掉入“陷阱”。 特殊...

    ORACLE 中ROWNUM用法总结

    在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,用于限制查询结果的行数,尤其是在处理大数据量或进行分页查询时。然而,`ROWNUM`的使用并不直观,尤其是当涉及到比较运算符(如`&gt;`, `&gt;=`, `=`等)时,容易引发...

    Oracle中rownum的使用

    Oracle中rownum的使用

    Oracle rownum.docx

    Oracle的ROWNUM是一个非常重要的概念,它在数据库查询中起到限制返回结果数量和进行特定行选择的作用。ROWNUM是一个伪列,表示从查询结果中返回的每一行的序列号,从1开始递增。 首先,当使用ROWNUM等于某个特定值...

    oracle rownum 使用技术.pdf

    ### Oracle ROWNUM 使用技术详解 #### 一、ROWNUM简介与特性 ROWNUM是Oracle数据库中的一个特殊列,用于为查询结果集中的每一行分配一个唯一的序号。这一功能非常强大,尤其在处理诸如“获取前N条记录”或“实现...

    sql语句中select top n与oracle的rownum与mysql的limit用法

    sql语句中select top n与oracle的rownum与mysql的limit 取前几条数据sql简单用法

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

    Oracle数据库中的Rownum是一个非常重要的特性,尤其在处理大量数据和实现分页显示时显得极其关键。Rownum是一个伪列,它并不是数据库表中实际存在的列,而是Oracle在执行查询时动态生成的,用来表示查询结果集中每一...

    mysql类似oracle rownum写法实例详解

    在 Oracle 中,`ROWNUM` 是一个非常有用的特性,它可以在查询时为每一行生成一个唯一的序列号,这对于限制返回结果的数量或者进行分页查询非常有用。然而,MySQL 并不直接支持 `ROWNUM` 这一概念。但在实际应用中,...

    oracle-rownum用法

    Oracle ROWNUM 用法详解 ROWNUM 是 Oracle 系统中一个伪列,用于对查询返回的行进行编号,从 1 开始,每行递增 1。ROWNUM 可以用于限制查询返回的总行数,但需要注意的是,ROWNUM 不能以任何表的名称作为前缀。 ...

    关于oracle的rownum

    Oracle ROWNUM 伪列详解 Oracle 的 ROWNUM 伪列是一个非常重要的概念,它对结果集加的一个伪列,即先查到结果集之后再加上去的一个列。了解 ROWNUM 的意义是非常重要的,否则可能会出现莫名其妙的结果。 ROWNUM ...

    oracle中取中间记录的方法

    本文将详细介绍如何利用Oracle中的`MINUS`操作符以及`ROWNUM`伪列来实现这一功能。 #### ROWNUM伪列简介 在介绍具体方法之前,我们首先了解一下`ROWNUM`伪列的基本概念。`ROWNUM`是Oracle提供的一种特殊的伪列,它...

    解析oracle的rownum

    解析 Oracle 的 ROWNUM Oracle 中的 ROWNUM 是一个伪列,用于对查询返回的行进行编号,返回的第一行分配的是 1,第二行是 2,以此类推。这个伪列可以用于限制查询返回的总行数。下面我们将通过实例来详细解析 ...

    ORACLE数据库中ROWNUM用法详解

    Oracle数据库中的ROWNUM是一个非常重要的概念,特别是在处理大型数据集时进行分页查询。ROWNUM是一个伪列,意味着它并不是数据库表中实际存在的列,而是Oracle数据库在执行查询时动态生成的一个序列号,用于标记查询...

    oracle的rownum用法

    Oracle的`ROWNUM`是一个伪列,它在查询结果集中自动添加,并从1开始为每一行赋予一个唯一的数字。在处理大数据集时,`ROWNUM`常用于限制返回的行数,实现分页或者筛选特定范围的记录。然而,正确理解和使用`ROWNUM`...

    oracle中rownum的用法及解说

    ### Oracle中的ROWNUM使用详解 在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,它可以帮助用户在查询结果集中为每一行分配一个唯一的行号。`ROWNUM`的值从1开始,并随着行的增加而递增。下面将详细介绍`ROWNUM`...

    Oracle DBA性能优化实践

    Hint.pdf Oracle中rowid与rownum的使用.pdf Oracle优化 之 索引.pdf Oracle优化器.pdf STATSPACK详解.pdf 学用ORACLE_AWR和ASH特性.pdf 执行计划.pdf

Global site tag (gtag.js) - Google Analytics