我有一个名为Employee的表
| EmpID | Name | Department | Supervisor |
我想列出其主管姓名旁边的所有员工。
SELECT empid, name, supervisor
FROM Employee;
给了我:
+-------+--------+------------+
| empid | name | supervisor |
+-------+--------+------------+
| 1 | John | NULL |
| 2 | Roger | NULL |
| 3 | Pete | NULL |
| 4 | Rafael | NULL |
| 5 | Rafael | 1 |
| 6 | Obama | 1 |
| 7 | Karl | 1 |
| 8 | Carl | 1 |
| 9 | Moni | 2 |
| 10 | Dave | 9 |
| 11 | David | 9 |
| 12 | Carl | 9 |
| 13 | Linda | NULL |
| 14 | Maria | NULL |
| 15 | Monk | 3 |
| 16 | Peter | NULL |
| 17 | Pete | 4 |
| 18 | Marina | 4 |
| 19 | John | 4 |
| 20 | Alvaro | 4 |
+-------+--------+------------+
我希望得到这个,但是在主管专栏中没有数字ID,我想要实际的名称,即数字ID。
我该怎么做?我想我需要一个花哨的嵌套查询,但我无法从mysql的文档中找出如何做到这一点
答案 0 :(得分:0)
select Employee.id, Employee.name, Supervisor.name from Employee left join Supervisor on Employee.supervisor = Supervisor.id
答案 1 :(得分:0)
您正在寻找JOIN
A JOIN
允许您生成两个数据集的笛卡尔积,然后可以根据需要对其进行过滤。通常,您在外键或其他重要索引上连接表。在您的情况下,您希望将此表与empID-supervisor关系一起加入。方法如下:
SELECT e.id, e.name, s.name
FROM Employee e LEFT JOIN Supervisor s ON e.supervisor = s.id
加入语法非常强大,需要一些时间才能正确掌握。为了更好地理解它并获得一个可靠的起点,我建议您阅读 OFFICIAL DOCUMENTATION