sql - 如何根据同一个表中的外键将一个表与自身连接起来?
问题描述
假设我有一个 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 操作获取经理的姓名。我应该使用联接吗?如果是这样,在这种情况下我该怎么做?
解决方案
这确实是一个自我加入:
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
避免将其过滤掉。
推荐阅读
- flutter - 如何从 Dart 包的 pub 发布中排除文件?
- javascript - Uncaught (in promise) TypeError: _this is not a function
- python - 拍摄 selenium 屏幕截图并在 tkinter gui 上显示
- python-2.7 - 在 Windows 10 中通过“hg-fast-export.sh”将 Hg 迁移到 Git
- javascript - 我如何获得加入的用户/成员的公会 ID (Discord.js)
- python - 在执行变量嵌套循环以进行置换之前应用条件
- google-apps-script - 如果为假则无法返回下一步
- python - 是否有允许检查 24 小时制是否有效的库?
- windows - 如何在 windows 中使用 npm replace 命令而不是 windows replace.exe 命令
- android - 如何从 Android Uno 平台上的内容对话框中删除内容填充?