给定下表(以Postgres为单位):
从开始 员工ID 7(Harry) -如何在层次结构中只列出自下而上的记录,直到找到最终的经理( 应该是大卫 ,在这种情况下)?我应该使用递归CTE吗?如果是,那么该查询看起来如何?
预期输出:
在通用表表达式中,您可以识别:
当 INNER JOIN 不会再返回任何额外的记录。
INNER JOIN
WITH RECURSIVE cte AS ( SELECT * FROM tab WHERE EmployeeID = 7 UNION ALL SELECT mgr.* FROM cte emp INNER JOIN tab mgr ON emp.ManagerID = mgr.EmployeeID ) SELECT * FROM cte
查看演示 here .