仅查询管理器

fumotvh3  于 2021-08-09  发布在  Java
关注(0)|答案(2)|浏览(252)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

10个月前关门了。
改进这个问题
我有这个表,只尝试检索经理:1,2,7,11,12我写了这个查询,想知道是否有更好的方法来检索这些答案。

select * 
  from employees emp
  where exists (select *
  from employees mng
  where mng.mangid=emp.emp_id )
  union
  select * 
  from employees
  where mngid is null

Empid   Name      Mngid
1       Alvin     NULL
2       Jose      1
3       Amado     1
4       Stuart    1
5       Demarcus  2
6       Mark      2
7       Merlin    2
8       Elroy     7
9       Charles   7
10      Rudolph   7
11      bob       NULL
12      danis     NULL
zphenhs4

zphenhs41#

您可以使用以下选项:

select distinct isnull(emp2.Empid, emp1.Empid) Empid, emp2.[Name], emp2.Mngid
from employees emp1
join employees emp2 on isnull(emp1.Mngid, emp1.Empid) = emp2.Empid

db<>小提琴

xghobddn

xghobddn2#

可以对子查询使用内部联接来避免作用域问题

select e.*
from employees e
inner join (
    select DISTINCT Mngid 
    from employees  
) t on t.Mngid = e.Empid
UNION 
select * 
from employees
where mngid is null

相关问题