要查询所有上级,可以使用递归查询的方法来实现。以下是一个示例查询语句,假设有一个名为employee
的表,其中包含员工的ID和上级ID:
WITH RECURSIVE cte AS (
SELECT id, parent_id
FROM employee
WHERE id = <employee_id> -- 指定要查询的员工ID
UNION ALL
SELECT e.id, e.parent_id
FROM employee e
JOIN cte ON e.id = cte.parent_id
)
SELECT *
FROM cte;
在上面的查询语句中,首先使用WITH RECURSIVE
关键字创建了一个递归公共表表达式(CTE),其中包含了指定员工及其所有上级的ID。然后使用UNION ALL
将当前查询结果与employee
表再次连接,直到找到所有上级为止。最后,通过SELECT * FROM cte
语句将所有上级查询出来。