首页 > 解决方案 > 如何根据同一个表中的外键将一个表与自身连接起来?

问题描述

假设我有一个 SQL 表,如下所示:

Id | Name | Email        | Id_manager
---+------+--------------+------------
1  | Jon  | jon@foo.com  |    2
2  | Mike | mike@foo.com |    2
2  | Bar  | bar@foo.com  |    1

所以这里 Jon 是 Bar 的经理,mike 是 John 和他自己的经理。Id_manager引用同一个表的外键也是如此。

我需要返回一个包含以下列的新表

Name, Email, Manager_Name

但我不知道如何使用 SQL 操作获取经理的姓名。我应该使用联接吗?如果是这样,在这种情况下我该怎么做?

标签: sqljoinforeign-keys

解决方案


这确实是一个自我加入:

select t.name, t.email, m.name as manager_name
from mytable t
inner join mytable m on m.id = t.id_manager

如果有没有经理的员工,您可能希望使用left join而不是inner join避免将其过滤掉。


推荐阅读