SELECT * FROM emp e LEFT JOIN dept d ON e.deptno
=d.deptno
AND e.deptno
=10;
SELECT * FROM emp e LEFT JOIN dept d ON e.deptno
=d.deptno
WHERE e.deptno
=10;
以上两行代码的区别就是一个使用WHERE来连接两个条件,一个用AND来连接,可是结果为什么差距这么大呢?
我们知道当我们使用左连接时emp表的信息应该时全在的,可是我们使用了where的却只有3行数据了,这说明where执行时在left join之后执行的,这时left join已经执行完输出一个结果集,而where是在left join产生的结果集上筛选。而我们使用and连接两个筛选条件后,left join产生的结果集是经过on中两个条件筛选过的结果集。所以才会造成这么大的差异。