1

我有桌子

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;

这个查询会给出正确的结果吗?

4

2 回答 2

0

您可以使用自联接:

SELECT e.name AS name, m.name AS manager_name
FROM   emp e
JOIN   emp m ON e.mgrid = m.id
于 2014-11-02T18:18:38.693 回答
0

您的查询应该失败,因为您的子查询是不相关的,并且如果您有多个顶级经理,将返回多个结果。

select name
     , (select name from EMP b where b.ID = a.mgerID ) as Manager 
  from EMP a;

我认为自联接是更规范的解决方案,但是您应该了解相关子查询以及它有很多应用。

于 2014-11-02T18:26:58.670 回答