我有桌子
EMP(id int primary key, name varchar2(15), mgrID int).
现在,此表格包含company. mgrID
列中包含他们所报告的员工ID的所有员工(包括员工和经理)。
我想列出不是经理的工人姓名以及他们的经理姓名。 如何处理此类查询。
我尝试了嵌套选择查询,如下所示:
select name, (select name from EMP where mgerID is NULL)
as Manager from EMP;
此查询会给出正确的结果吗?
答案 0 :(得分:0)
您可以使用自我加入:
SELECT e.name AS name, m.name AS manager_name
FROM emp e
JOIN emp m ON e.mgrid = m.id
答案 1 :(得分:0)
您的查询应该失败,因为您的子查询是不相关的,如果您有多个顶级管理器,则会返回多个结果。
select name
, (select name from EMP b where b.ID = a.mgerID ) as Manager
from EMP a;
我认为自联接是更规范的解决方案,但你应该理解相关的子查询以及它有很多应用。