是这样子的。题目要求为求员工姓名和员工的领导的姓名。
在emp表里的mgr和empno进行连接:
第一种写法返回了12行值:
第二种就返回了18行值:
首先,对于员工表来说,领导字段mgr可能存在,也可能不存在,但是empno肯定存在。两种不同的关联写法,区别是以mgr字段为主表还是以empno字段为主表,所以结果会不同。第二种写法,由于empno一定存在,所以数查询出的量就会多余第一种结果
-- 返回18行
select e.ename '员工' ,d.enamea '领导'
from emp e
left join emp d on e.empno = d.mgr;
-- 返回12行
select e.ename '员工',d.ename '领导'
from emp e
left join emp d on e.mgr = d.empno;
left join 是以第一个表为准(此处为e表),e.mgr有null的时候,数据就会少
mgr有空值是主要原因吧
加上where条件 mgr is not null
不是一对一的关系吧
第二种其实是查员工有哪几个下属。主要问题:e.empno = d.mgr,关联条件是 e 是 d 的领导。