自联接究竟是如何工作的



我本能地解决了任务,但仍然不真正理解自联接在这种情况下是如何工作的。你能解释一下这里包含e1和e表的内容吗?我们从self-join得到的表包含什么?

select e.first_name, e.salary, e.id, e.manager_id, e.employee_title 
from employee e
join employee e1 on e1.id = e.manager_id
where e.salary > e1.salary
order by e.manager_id;

此处的员工表包含员工与其经理之间的层次关系。

通过self-join,您可以让所有员工都有他们的直接经理(在e1.id=e.manager_id上(。e1别名可以更好地重命名为m或mgr或其他名称,以表明它包含匹配的管理器。这样做,立即选择更容易理解。

SELECT e.first_name, e.salary, e.id, e.manager_id, e.employee_title 
, mgr.first_name -- added to clarify
FROM employee e
JOIN employee mgr on mgr.id = e.manager_id
WHERE e.salary > mgr.salary
ORDER BY e.manager_id;

此外,在当前的where条件下,您只能选择薪水高于经理的员工。

最新更新