ORACLE:数据库中ROWNUM的详解与应用

首先先了解一下Rownum的执行机制:

1.Oracle executes your query.(开始执行查询)

2.Oracle fetches the first row and calls it row number 1.(执行第一行,并且标记该行为第一行)

3.Have we gotten past row number meets the criteria? If no, then Oracle discards the row, If yes, then Oracle return the row.(你过去得到的行号是否符合标准<即where条件句>,如果不符合,则废弃掉这一行和行号,如果符合,就返回该行保存行号)

4.Oracle fetches the next row and advances the row number (to 2, and then to 3, and then to 4, and so forth).(开始执行下一行,并且是行号+1)

5.Go to step 3.

了解了原理,就知道rownum>不会成功,因为在第三步的时候查询出的行已经被丢弃,第四步查出来的rownum仍然是1,这样永远也不会成功。

然后来说一下使用ROWNUM的注意事项:

1.Rownum不能以任何表的名称作为前缀,因为它不属于任何一个表。

2.Rownum想查询大于第几行的必须用子查询。

3.因为rownum不属于表,所以rownum必须有对应的别名,否则系统无法区分是哪个rownum,就是只有一个rownum也必须有别名。

4.select rownum no , *  from student 是不成立的;

 select A.* , ROWNUM RN from (SELECT * from "student") A 才成立;

最后看一下实例:

//例一: SELECT A. * from(select rownum no ,id,name from student order by sid) A where no>2 and no <10; //例二: SELECT * FROM (SELECT A.* , ROWNUM RN FROM (SELECT * FROM "STUDENT" ORDER BY "SID" DESC) A WHERE ROWNUM < 3) WHERE RN >= 1; //注意:例一、例二中的 * 前的表别名是必须存在的.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值