浏览 1167 次
锁定老帖子 主题:关于这个表连接中过滤条件的执行
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2014-02-20
select e.ename,e.salary,e.deptno from employee e join (select deptno,round(avg(salary)) avgsal from employee group by deptno) a on e.deptno = a.deptno and e.salary > a.avgsal 其中select子句的查询结果集是: 1 30 4500 2 20 11667 3 10 8000 那么e.salary > a.avgsal是怎么执行的呢? 我今天问了好几个人有两种说法: 1、在表连接之前,满足e.salary > a.avgsal 这个条件的都被查询出来,也就是说一个员工的工资是5000元,但是可能会比对三次,发现其符合条件然后被筛选出来。 2、在表连接之前,每个部门的记录根据e.deptno = a.deptno条件找自己部门的工资平均值来进行比较,然后将符合条件的记录过滤出来。 我想知道这两个执行过程oracle会选择执行哪一个? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |