课程
/数据库
/Oracle
/Oracle高级查询
谁能给解释一下 为什么第二层查询中的 rownum r不是行号?
2015-12-07
源自:Oracle高级查询 5-2
正在回答
刚开始的时候sum=sum+num=0+2;num=num+2=2+2,这里开始就犯迷糊了,前一个num等于2,后一个就已经等于4,开始有点思维转不过来了那个不是单引号,是反引号,就是esc下面的第一个键子,英文模式下输入,防止库名、表名、字段名和mysql保留字冲突才使用的^_^...
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伪列更容易理解。
oracle的分页查询是主流数据库中组复杂的一种,需要三层嵌套进行查询,第二层嵌套中志明需要分页的字段来自哪里,然后交由第三层嵌套进行分页,不过格式比较固定
举报
数据库开发中应用广泛的高级查询,本教程通过大量的案例详细讲解
1 回答这里直接用子查询里的不就行了 ,为什么还要写主查询
1 回答e1里面的rownum是不是不需要写的?
3 回答关于层次查询的问题
3 回答层次查询显示老板姓名
3 回答子查询中的 e.deptno如果替换成 emp.deptno得到的结果为什么不一样?