rownum 的主要功能是限制 DB 查询出来的结果集数 .
他的实现步骤如下:
执行查询语句
- oracle 取出第一行,并设为 rownum1
- 这个 rownum 是不是符合我们的查询条件,不是则舍弃,是则保留此行。
- oracle 取下一行,然后将 rownum 增加 1
- 重复 3 的步骤
从上面的实现来看, oracle 的 rownum 的意思应该是伪列,也就是说只有符合 where 条件的行才有行号。
所以rownum = 或者 >查出来的结果集都是空的,因为在遍历数据的时候并没有增加rownum只有符合标准的行才有rownum。
那么我们怎么实现真实的行号呢?
看如下代码:
select no
from X1 (
select rownum no from
x2
) where no = 3