如何在以下场景中获得结果

时间:2014-11-02 18:13:31

标签: sql select oracle10g nested-queries mssql-jdbc

我有桌子

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;

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

2 个答案:

答案 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;

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