处理以下查询的有效方法?在 SQLServer 或 PostgreSql 中(自连接)
Efficient way to handle below query? in SQLServer or PostgreSql (Self join)
我有一名员工table如下
我需要 select employee_id, manager_id, 结果。结果应为 true 或 false 取决于以下条件。
- 如果员工是某人的经理则为真
- 如果员工有经理则为真
我想到了一个查询,但我需要知道是否还有其他更好的方法。
这是我的查询
with manager as
(
select distinct manager_id from employee where manager_id is not null
)
select
e.employee_id, e.manager_id , m.manager_id,
case when e.manager_id is not null then true
when m.manager_id is not null then true
else false
end as Result
from employee e left join manager m on e.employee_id = m.manager_id
结果应该是这样的
可能是这样的:
select
e.employee_id,
e.manager_id,
(
e.manager_id is not null
or
exists(select 1 from employee m where m.manager_id=e.employee_id)
) as result
from employee e;
我有一名员工table如下
我需要 select employee_id, manager_id, 结果。结果应为 true 或 false 取决于以下条件。
- 如果员工是某人的经理则为真
- 如果员工有经理则为真
我想到了一个查询,但我需要知道是否还有其他更好的方法。 这是我的查询
with manager as
(
select distinct manager_id from employee where manager_id is not null
)
select
e.employee_id, e.manager_id , m.manager_id,
case when e.manager_id is not null then true
when m.manager_id is not null then true
else false
end as Result
from employee e left join manager m on e.employee_id = m.manager_id
结果应该是这样的
可能是这样的:
select
e.employee_id,
e.manager_id,
(
e.manager_id is not null
or
exists(select 1 from employee m where m.manager_id=e.employee_id)
) as result
from employee e;