嵌套查询中的SQL IN运算符

时间:2017-08-27 13:07:58

标签: mysql sql nested

我有一个名为" Employees"列#34;电子邮件"是指员工的电子邮件和“" MgrEmail"是指他们的直接经理的电子邮件。

我创建了一个查询,该查询应该找到管理层次结构中的所有第三级员工。然而,它并没有检索到正确的记录,我不确定为什么。

 SELECT *
FROM Employees
WHERE MgrEmail IN
    (SELECT Email
     FROM Employees
     WHERE MgrEmail IN
         (SELECT Email
          FROM Employees
          WHERE MgrEmail='test@test.com'))

1 个答案:

答案 0 :(得分:0)

假设经理的标记是他的经理电子邮件是NULL,那么一个选项就是从第三级员工开始,只做两个Employees表的自联接,然后停止当我们发现经理高出两步时。

SELECT e1.*
FROM Employees e1
INNER JOIN Employees e2
    ON e1.MgrEmail = e2.Email
INNER JOIN Employees e3
    ON e2.MgrEmail = e3.Email
WHERE e3.MgrEmail IS NULL      -- assuming that a manager would himself have no manager