自连接究竟是如何工作的?

d5vmydt9  于 2022-10-15  发布在  PostgreSQL
关注(0)|答案(1)|浏览(146)

我本能地解决了这个任务,但仍然不太明白在这种情况下自我联接是如何工作的。你能解释一下这里有什么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;
jgwigjjp

jgwigjjp1#

这里的Employee表包含员工及其经理之间的分层关系。
通过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条件下,您只能选择薪资高于其经理的员工。

相关问题