执行顺序问题
来源:3-1 表的内连接
洛奇丶大
2019-07-03 09:40:46
SELECT e2.ename
FROM t_emp e1 JOIN t_emp e2 ON e1.deptno=e2.deptno
WHERE e1.ename="SCOTT" AND e2.ename!="SCOTT"
应该是先执行WHERE中的条件,然后再执行ON后的条件吧?
如果不是这样,先执行ON之后的条件,那么就无法过滤出SCOTT所在部门编号
这题如果用如下写法,是不是无法实现功能?必须用JOIN ON 关键字写法?
SELECT e.deptno,e.ename,d.deptno,d.dname
FROM t_emp e,t_dept d
WHERE e.deptno=d.deptno
2回答
同学,你好。
1、会先执行ON条件对两个表中的记录进行筛选,再执行where条件对on之后的的记录进行筛选
2、同学的写法为查询出每个员工所在的部门
3、回答中的问题:内连接只保留符合条件的记录,因此可以将on子句中的条件写在where子句中。
在where条件中只用到了AND运算符,因此会从左到右进行判断。三个条件同时满足才可以。
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
洛奇丶大
提问者
2019-07-03
SELECT e2.ename
FROM t_emp e1 JOIN t_emp e2
WHERE e1.deptno=e2.deptno AND e1.ename="SCOTT" AND e2.ename!="SCOTT"
这样写也可以,为什么呢?
为什么e1.ename="SCOTT" AND e2.ename!="SCOTT" 这两个条件先执行
最后再执行e1.deptno=e2.deptno呢?
相似问题