如何简化此查询?

时间:2012-04-08 21:22:39

标签: sql simplify

所以这个查询的主要目标是选择名为Mario Souza的经理下的所有部门和员工。

SELECT d.deptname,e.name FROM employee e JOIN department d ON e.dept = d.deptnum WHERE idmanager IN(
SELECT id FROM employee WHERE name = 'Mario Souza' 
) AND manager IN(
SELECT id FROM employee WHERE name = 'Mario Souza' 
)

它有效,但有没有办法存储第一个IN结果,以便我可以在AND运算符之后使用它?

2 个答案:

答案 0 :(得分:2)

您可以使用EXISTS匹配多列。

WHERE EXISTS
(
    SELECT *
    FROM employee AS manager
    WHERE manager.name = 'Mario Souza'
    AND manager.id = e.idmanager
    AND manager.id = d.manager
)

答案 1 :(得分:1)

您可以在员工表中使用JOIN。简单地将经理和idmanager都放在ON子句中。