我有一位有列的员工
| 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的文档中实现这一点。
发布于 2013-09-26 14:32:38
你在找JOIN
JOIN允许您生成两个数据集的笛卡儿积,然后可以根据需要进行筛选。通常,可以在外键或其他重要索引上联接表。在您的例子中,您希望在空In监督关系上加入这个表。下面是操作步骤:
SELECT e.id, e.name, s.name
FROM Employee e LEFT JOIN Supervisor s ON e.supervisor = s.id联接语法非常强大,需要一段时间才能正确掌握。为了更好地理解它并获得一个坚实的起点,我建议您阅读正式文件
发布于 2013-09-26 14:30:08
select Employee.id, Employee.name, Supervisor.name from Employee left join Supervisor on Employee.supervisor = Supervisor.id https://stackoverflow.com/questions/19030977
复制相似问题