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

为什么第二层查询中的 rownum r不是行号?

谁能给解释一下  为什么第二层查询中的 rownum r不是行号?

正在回答

3 回答

刚开始的时候sum=sum+num=0+2;num=num+2=2+2,这里开始就犯迷糊了,前一个num等于2,后一个就已经等于4,开始有点思维转不过来了escmysql使^_^...

0 回复 有任何疑惑可以回复我~

R本质还是行号伪列,只不过在第二层的查询中,将它重命名了,避免列名重名,你可以理解为将行号伪列转换成了普通列,以便于第三层的where中使用 > 条件。(ROWNUM伪列不能使用>)

其实最内侧的查询,用不到ROWNUM,

SELECT * 
FROM(SELECT ROWNUM 行号列,e.* 
      FROM (SELECT empno,ename,sal 
            FROM emp ORDER BY sal DESC) e
      WHERE ROWNUM<=8)
WHERE 行号列>4;

可以得到相同的查询结果。其实少一个ROWNUM伪列更容易理解。

3 回复 有任何疑惑可以回复我~

oracle的分页查询是主流数据库中组复杂的一种,需要三层嵌套进行查询,第二层嵌套中志明需要分页的字段来自哪里,然后交由第三层嵌套进行分页,不过格式比较固定

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么第二层查询中的 rownum r不是行号?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信