执行顺序问题

来源: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回答

时间,

2019-07-03

同学,你好。

1、会先执行ON条件对两个表中的记录进行筛选,再执行where条件对on之后的的记录进行筛选

2、同学的写法为查询出每个员工所在的部门

3、回答中的问题:内连接只保留符合条件的记录,因此可以将on子句中的条件写在where子句中。

在where条件中只用到了AND运算符,因此会从左到右进行判断。三个条件同时满足才可以。

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

0

洛奇丶大

提问者

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呢?

0

0 学习 · 2669 问题

查看课程