解析oracle的ROWNUMOracle认证考试

文章作者 100test 发表时间 2009:12:11 18:09:44
来源 100Test.Com百考试题网


"gklt">

  对于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>. 0select rownum,id,name from student where rownum=1.(可以用在限制返回记录条数的地方,保证不出错,如:隐式游标)

  SQL>. 0select rownum,id,name from student where rownum=1.

  ROWNUM ID NAME

  ---------- ------ ---------------------------------------------------

  1 200001 张一

  SQL>. 0select rownum,id,name from student where rownum =2.

  ROWNUM ID NAME

  ---------- ------ ---------------------------------------------------

  (2)rownum对于大于某值的查询条件

  如果想找到从第二行记录以后的记录,当使用rownum>.2是查不出记录的,原因是由于rownum是一个总是从1开始的伪列,Oracle 认为rownum>. n(n>.1的自然数)这种条件依旧不成立,所以查不到记录

  SQL>. 0select rownum,id,name from student where rownum >.2.

  ROWNUM ID NAME

  ---------- ------ ---------------------------------------------------

  那如何才能找到第二行以后的记录呀。可以使用以下的子查询方法来解决。注意子查询中的rownum必须要有别名,否则还是不会查出记录来,这是因为rownum不是某个表的列,如果不起别名的话,无法知道rownum是子查询的列还是主查询的列。


相关文章


Oracle数据库ORA00257故障的解决过程Oracle认证考试
oracle多表查询与子查询复习Oracle认证考试
oracle认证辅导Loracle中常用参数Oracle认证考试
全面认识Oracle的连接Oracle认证考试
解析oracle的ROWNUMOracle认证考试
Oracle外键级联删除Oracle认证考试
设定Oracle最大游标数Oracle认证考试
常用的SQL语句语法(Oracle版)二Oracle认证考试
常用的SQL语句语法(Oracle版)一Oracle认证考试
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛