外连接的 where 条件 on 条件的区别
内连接里 查询条件写在ON子句或者WHERE字句,效果相同

外连接里,查询条件写在on字句或者WHERE字句,效果不同
select empno, dname, d.deptno
from emp e
left join dept d on e.deptno = d.deptno and d.deptno = 10;
还是写在on字句里面了,是deptno=10,在 SQL里边员工表是左表,那么部门表是右表,那么左连接会保留左表所有的记录跟右表进行进行连接,右边如果有符合连接条件的记录,那么就拿这样的记录跟左表进行连接。如果说右表没有符合连接条件的记录,那么右表就会用null值与左表连接,所以说在外连接的 on子句中写的条件并没有强求,一定符合连接条件才能查询出记录,不符合连接条件同样会查询出记录,所以说我把第一批deptno=10的条件写在on字句中,查询出来的结果可是包含了其他部门的员工
select empno, dname, d.deptno
from emp e
left join dept d on e.deptno = d.deptno
where d.deptno = 10;
如果说我把这个查询条件写到在where子句当中,那么必须要符合查询条件的记录才会被检索出来,可不是保全所有左表的数据了,那么左表的数据必须要满足where子句的条件,才可以检索出数据。

总结
因此说外连接的SQL语句中查询条件写在什么位置还是有很大区别的,