为了账号安全,请及时绑定邮箱和手机立即绑定

Oracle数据库的rownum为什么会出现这个问题?

Oracle数据库的rownum为什么会出现这个问题?

一只萌萌小番薯 2019-05-25 17:59:45
我有一个“亲子关系”的一张表parentage:SQL>select*fromparentage;FATHERCHILD--------------------DavidCindyDavidTonyTomAmyTomBobTomNick为了练习rownum关键字,我想输出前两行,如下语句可以正确运行:SQL>select*fromparentagewhererownumselect*fromparentagewhererownum>2;未选定行系统提示未选定行,为什么呢?明明表中有5行啊?还有,我想输出第二行和第三行时:SQL>select*fromparentagewhererownumbetween2and3;未选定行SQL>select*fromparentagewhererownum>=2andrownum
查看完整描述

2 回答

?
守候你守候我

TA贡献1802条经验 获得超10个赞

rownum是Oracle系统顺序分配给查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,而且rownum不能以任何表的名称作为前缀。
WHERE子句的操作,是筛选数据,不满足的去掉。又因为,rownum是返回结果中的顺序计数,如果去掉一行,后面计数会全部-1;所以,如果rownum>=2,那么第一行就不满足,去掉之后原来rownum=2的行,现在成了rownum=1,所以这样一直到所有的行都被清完,仍然不会满足。
所以,当所有的行清完都没有满足条件时,就会报错:未选择行。
                            
查看完整回答
反对 回复 2019-05-25
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

@boxsnake已经把rownum的内在含义说清楚了,想要达到你的目的,可以这样写:
select*from(
selectt.*,rownumasrnfromparentaget
)wherern>2
                            
查看完整回答
反对 回复 2019-05-25
  • 2 回答
  • 0 关注
  • 598 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信