Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2833196
  • 博文数量: 599
  • 博客积分: 16398
  • 博客等级: 上将
  • 技术积分: 6875
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-30 12:04
个人简介

WINDOWS下的程序员出身,偶尔也写一些linux平台下小程序, 后转行数据库行业,专注于ORACLE和DB2的运维和优化。 同时也是ios移动开发者。欢迎志同道合的朋友一起研究技术。 数据库技术交流群:58308065,23618606

文章分类

全部博文(599)

文章存档

2014年(12)

2013年(56)

2012年(199)

2011年(105)

2010年(128)

2009年(99)

分类: Oracle

2012-04-20 10:24:36

 
 
对于不熟悉ROWNUM用法的人可以好好的看看了。
 
为什么SELECT * FROM T WHERE ROWNUM=1 可以查询出来数据,
而SELECT * FROM T WHERE ROWNUM=2不可以查询出来数据。
 
TOM大师给出ROWNUM计算的逻辑如下:
 
rownum = 1
for x in ( select * from A )
loop
  if ( x satisifies the predicate )
  then
    OUTPUT the row
    rownum = rownum + 1
end if;
end loop;

in the case of where rownum = 1, the first row passes the test, is output and rownum goes
to 2. No other row ever satisfies the predicate and rownum stays at 2 for the rest of
the query.
in the case of where rownum = 2, the first row is rownum 1, it fails. The next row is
ALSO rownum = 1 and likewise fails. And so on. There can be NO row 2 if there is not a
row 1.
阅读(1154) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~