解析 oracle 的 ROWNUM
对于 rownum 来说它是 oracle 系统顺序分配为从查询返回的行的编号,返回的第
一行分配的是 1,第二行是 2,依此类推,这个伪字段可以用于限制查询返回的
总行数,而且 rownum 不能以任何表的名称作为前缀。
举例说明:
例如表:student(学生)表,表结构为:
ID char(6) --学号
name VARCHAR2(10) --姓名
create table student (ID char(6), name VARCHAR2(100));
insert into sale values('200001',‘张一’);
insert into sale values('200002',‘王二’);
insert into sale values('200003',‘李三’);
insert into sale values('200004',‘赵四’);
commit;
(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=1;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------
1 200001 张一
SQL> select rownum,id,name from student where rownum =2;
ROWNUM ID NAME
---------- ------ ---------------------------------------------------