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

子查询中的 e.deptno如果替换成 emp.deptno得到的结果为什么不一样?

1)select empno,ename,sal, (select avg(sal) from emp where deptno=e.deptno) avgsal

   from emp e

   where sal > (select avg(sal) from emp where deptno=e.deptno)

2)select empno,ename,sal, (select avg(sal) from emp where deptno=emp.deptno) avgsal

   from emp e

   where sal > (select avg(sal) from emp where deptno=emp.deptno)


正在回答

3 回答

from emp e

   where sal > (select avg(sal) from emp where deptno=emp.deptno)

因为 e 表是from emp e 这个表  emp.deptno  select avg(sal) from emp 是指这个表


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

主查询和子查询用的同一张表,子查询语句条件中的deptno=emp.deptno 相当于笛卡尔积了。如果子查询和主查寻每张表都有别名,就不存在这种问题了。

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

就近原则,如果子查询内有符合 ‘emp’ 的 表/集合,就采用子查询内的,所以第二条语句的emp.deptno用的是子查询内的而不是子查询外的。

2 回复 有任何疑惑可以回复我~
#1

180416

还有就近原则,稳定的吗?
2019-04-24 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

子查询中的 e.deptno如果替换成 emp.deptno得到的结果为什么不一样?

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