需要有关查询的帮助

时间:2014-12-16 21:52:45

标签: sql select

我有一张表employees,如下所示:

Id Name Manager_Id
1  ABC   4
2  DEF   20
3  GHI   30
4  JKL   40

以下查询不会返回任何结果。我期待它会回归" JKL"。我在这里缺少什么?

select e1.Name from Employees e1 where e1.id = 
   (select e2.manager_id from employees e2 where e2.id = e1.id);

2 个答案:

答案 0 :(得分:4)

如果您从外部向下打破此查询,则您希望找到e1.id = e2.manager_id以及e2.id = e1.id所在的记录。换句话说,您要查询id = manager.id的记录,而该记录根本就不存在。

我认为您尝试做的是在表格中选择id作为manager_id存在的所有记录。 使用in运算符可以更简单地完成此操作:

SELECT name
FROM   employees
WHERE  id IN (SELECT manager_id FROM employees)

答案 1 :(得分:2)

使用in,而不是=

select e1.Name from Employees e1 where e1.id IN 
   (select e2.manager_id from employees e2 where e2.id = e1.id);

=运算符用于测试标量是否相同。 IN测试设置成员资格。