对于 rownum 来说它是 oracle 系统顺序分配为从查询返回的行的编
号,返回的第一行分配的是 1,第二行是 2,依此类推,这个伪字段
可以用于限制查询返回的总行数,且 rownum 不能以任何表的名称作
为前缀。
(1) rownum 对于等于某值的查询条件 如果希望找到学生表中第一条
学生的信息,可以使用 rownum=1 作为条件。但是想找到学生表中第
二条学生的信息,使用 rownum=2 结果查不到数据。因为 rownum
都是从 1 开始,但是 1 以上的自然数在 rownum 做等于判断是时认为
都是 false 条件,所以无法查到 rownum = n(n>1 的自然数)。 SQL>
select rownum,id,name from student where rownum=1;(可以用在
限制返回记录条数的地方,保证不出错,如:隐式游标) SQL> select
rownum,id,name from student where rownum =2; ROWNUM ID
NAME ---------- ------
-------------------------------------------------
--
(2)rownum 对于大于某值的查询条件 如果想找到从第二行记录以
后的记录,当使用 rownum>2 是查不出记录的,原因是由于 rownum
是一个总是从 1 开始的伪列,Oracle 认为 rownum> n(n>1 的自然数)
这种条件依旧不成立,所以查不到记录。 查找到第二行以后的记录
可使用以下的子查询方法来解决。注意子查询中的 rownum 必须要有
别名,否则还是不会查出记录来,这是因为 rownum 不是某个表的列,