(今天仔细查看了下 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 使用详解与 SQL Server 区别 在数据库操作中,ROWNUM 是一个非常重要的伪列,主要用于返回查询结果的行序号。它在 Oracle 数据库中有着广泛的应用场景,尤其是在需要对查询结果进行分页显示、...
对于 Oracle 的 rownum 问题,很多资料都说不支持>,>=,=,between...and,只能用以上符号(<、、!=),并非说用>,>=,=,between..and 时会提示SQL语法错误,而是经常是查不出一条记录来,还会出现似乎是莫名其妙的结果来...
Oracle ROWNUM学习 Oracle ROWNUM是Oracle系统顺序分配的行号,用于限制查询返回的总行数。ROWNUM是一个伪字段,不能以任何表的名称作为前缀。下面是对ROWNUM的详细讲解: 一、ROWNUM的基本用法 ROWNUM是一个伪...
"Oracle 中的 ROWNUM 和 DISTINCT" Oracle 中的 ROWNUM 和 DISTINCT 是两个非常重要的关键词,它们在查询数据时发挥着至关重要的作用。然而,许多开发者在使用这两个关键词时,却常常会遇到一些不太理解的地方,...
ROWNUM 是 Oracle 中的一种伪列,它可以根据返回记录生成一个序列化的数字。利用 ROWNUM,我们可以生产一些原先难以实现的结果输出,但是因为它是伪列的特殊性,在使用时需要注意一些事项,以免掉入“陷阱”。 特殊...
在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,用于限制查询结果的行数,尤其是在处理大数据量或进行分页查询时。然而,`ROWNUM`的使用并不直观,尤其是当涉及到比较运算符(如`>`, `>=`, `=`等)时,容易引发...
Oracle中rownum的使用
Oracle的ROWNUM是一个非常重要的概念,它在数据库查询中起到限制返回结果数量和进行特定行选择的作用。ROWNUM是一个伪列,表示从查询结果中返回的每一行的序列号,从1开始递增。 首先,当使用ROWNUM等于某个特定值...
### Oracle ROWNUM 使用技术详解 #### 一、ROWNUM简介与特性 ROWNUM是Oracle数据库中的一个特殊列,用于为查询结果集中的每一行分配一个唯一的序号。这一功能非常强大,尤其在处理诸如“获取前N条记录”或“实现...
sql语句中select top n与oracle的rownum与mysql的limit 取前几条数据sql简单用法
Oracle数据库中的Rownum是一个非常重要的特性,尤其在处理大量数据和实现分页显示时显得极其关键。Rownum是一个伪列,它并不是数据库表中实际存在的列,而是Oracle在执行查询时动态生成的,用来表示查询结果集中每一...
在 Oracle 中,`ROWNUM` 是一个非常有用的特性,它可以在查询时为每一行生成一个唯一的序列号,这对于限制返回结果的数量或者进行分页查询非常有用。然而,MySQL 并不直接支持 `ROWNUM` 这一概念。但在实际应用中,...
Oracle ROWNUM 用法详解 ROWNUM 是 Oracle 系统中一个伪列,用于对查询返回的行进行编号,从 1 开始,每行递增 1。ROWNUM 可以用于限制查询返回的总行数,但需要注意的是,ROWNUM 不能以任何表的名称作为前缀。 ...
Oracle ROWNUM 伪列详解 Oracle 的 ROWNUM 伪列是一个非常重要的概念,它对结果集加的一个伪列,即先查到结果集之后再加上去的一个列。了解 ROWNUM 的意义是非常重要的,否则可能会出现莫名其妙的结果。 ROWNUM ...
本文将详细介绍如何利用Oracle中的`MINUS`操作符以及`ROWNUM`伪列来实现这一功能。 #### ROWNUM伪列简介 在介绍具体方法之前,我们首先了解一下`ROWNUM`伪列的基本概念。`ROWNUM`是Oracle提供的一种特殊的伪列,它...
解析 Oracle 的 ROWNUM Oracle 中的 ROWNUM 是一个伪列,用于对查询返回的行进行编号,返回的第一行分配的是 1,第二行是 2,以此类推。这个伪列可以用于限制查询返回的总行数。下面我们将通过实例来详细解析 ...
Oracle数据库中的ROWNUM是一个非常重要的概念,特别是在处理大型数据集时进行分页查询。ROWNUM是一个伪列,意味着它并不是数据库表中实际存在的列,而是Oracle数据库在执行查询时动态生成的一个序列号,用于标记查询...
Oracle的`ROWNUM`是一个伪列,它在查询结果集中自动添加,并从1开始为每一行赋予一个唯一的数字。在处理大数据集时,`ROWNUM`常用于限制返回的行数,实现分页或者筛选特定范围的记录。然而,正确理解和使用`ROWNUM`...
### Oracle中的ROWNUM使用详解 在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,它可以帮助用户在查询结果集中为每一行分配一个唯一的行号。`ROWNUM`的值从1开始,并随着行的增加而递增。下面将详细介绍`ROWNUM`...
Hint.pdf Oracle中rowid与rownum的使用.pdf Oracle优化 之 索引.pdf Oracle优化器.pdf STATSPACK详解.pdf 学用ORACLE_AWR和ASH特性.pdf 执行计划.pdf