Sql 如何在下面的场景中获得结果
我有一张桌子Sql 如何在下面的场景中获得结果,sql,select,oracle10g,nested-queries,mssql-jdbc,Sql,Select,Oracle10g,Nested Queries,Mssql Jdbc,我有一张桌子 EMP(id int primary key, name varchar2(15), mgrID int). 现在这个表格包含了所有员工,包括公司的工人和经理。mgrID列包含他们向其报告的员工的id 我想列出不是经理的工人的姓名以及他们的经理姓名。 如何处理此类查询 我尝试了嵌套选择查询,如下所示: select name, (select name from EMP where mgerID is NULL) as Manager from EMP; 此查询会给出正确的结
EMP(id int primary key, name varchar2(15), mgrID int).
现在这个表格包含了所有员工,包括公司的工人和经理。mgrID列包含他们向其报告的员工的id
我想列出不是经理的工人的姓名以及他们的经理姓名。
如何处理此类查询
我尝试了嵌套选择查询,如下所示:
select name, (select name from EMP where mgerID is NULL)
as Manager from EMP;
此查询会给出正确的结果吗?您可以使用自联接:
SELECT e.name AS name, m.name AS manager_name
FROM emp e
JOIN emp m ON e.mgrid = m.id
您的查询应该失败,因为您的子查询是不相关的,并且如果您有多个顶级经理,则将返回多个结果
select name
, (select name from EMP b where b.ID = a.mgerID ) as Manager
from EMP a;
我认为自连接是更规范的解决方案,但您应该了解相关子查询,因为它有许多应用程序