题目链接:点击打开链接
题目大意:略。
解题思路:略。
AC 代码
-- 解决方案(1)
SELECT DISTINCT employee_id FROM (
SELECT employee_id
FROM Employees WHERE manager_id = 1
UNION ALL
SELECT employee_id
FROM Employees WHERE manager_id IN (
SELECT employee_id FROM Employees WHERE manager_id = 1
)
UNION ALL
SELECT employee_id
FROM Employees WHERE manager_id IN (
SELECT employee_id FROM Employees WHERE manager_id IN (
SELECT employee_id FROM Employees WHERE manager_id = 1
)
)
) T WHERE employee_id != 1
-- 解决方案(2)
SELECT e1.employee_id
FROM Employees e1
JOIN Employees e2 ON e1.manager_id = e2.employee_id
JOIN Employees e3 ON e2.manager_id = e3.employee_id
WHERE e1.employee_id != 1 AND e3.manager_id = 1
-- 解决方案(3)
WITH t1 AS(SELECT employee_id FROM Employees WHERE manager_id = 1),
t2 AS(SELECT employee_id FROM Employees WHERE manager_id IN (SELECT * FROM t1)),
t3 AS(SELECT employee_id FROM Employees WHERE manager_id IN (SELECT * FROM t2))
SELECT *
FROM t2
WHERE employee_id <> 1
UNION
SELECT *
FROM t3
WHERE employee_id <> 1