You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中从指定员工向上追溯至终极经理的递归CTE查询

问题

现有如下PostgreSQL员工表:

EmployeeIDEmployeeNameManagerID
1DavidNULL
2JessicaNULL
3Gregg1
4Joe3
5BrandonNULL
6Leslie4
7Harry6
8PaulNULL
9Frank5

如何从员工ID 7(Harry)开始,自底向上列出层级记录直至终极经理(本例为David)?是否应使用递归CTE?若使用,对应的查询语句是什么?

回答

是的,递归CTE是解决这类层级追溯问题的标准方案,非常适合从指定节点向上遍历至顶级节点的场景。

对应的PostgreSQL查询语句如下:

WITH RECURSIVE employee_hierarchy AS (
    -- 锚点查询:定位起始员工Harry(ID=7)
    SELECT EmployeeID, EmployeeName, ManagerID
    FROM employees
    WHERE EmployeeID = 7
    UNION ALL
    -- 递归查询:逐层向上关联员工的直属经理
    SELECT e.EmployeeID, e.EmployeeName, e.ManagerID
    FROM employees e
    JOIN employee_hierarchy eh ON e.EmployeeID = eh.ManagerID
)
-- 按层级从顶级到末级排序,确保终极经理排在最前
SELECT EmployeeID, EmployeeName, ManagerID
FROM employee_hierarchy
ORDER BY ManagerID NULLS FIRST;
预期输出
EmployeeIDEmployeeNameManagerID
1DavidNULL
3Gregg1
4Joe3
6Leslie4
7Harry6

内容的提问来源于stack exchange,提问作者John Jackson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 00:10:23