Postgres递归查询-在给定叶节点的情况下获取根的路径

问题描述 投票:1回答:1

我在树结构中有一个叶子节点,并且我需要一个Postgres查询来递归遍历父节点,以获取到我的叶子节点的完整路径。

我的表看起来像这样-问题在于没有特定的根节点(即,最高级的经理最终会互相报告)

+----+------------+-------+
| id | manager_id | name  |
+----+------------+-------+
|  1 |          2 | Matt  |
|  2 |          1 | Simon |
|  3 |          1 | John  |
|  4 |          2 | Bob   |
|  5 |          4 | Bill  |
+----+------------+-------+

给比尔(id=5)这样的用户,我在他们的报告行之后:

Matt > Simon > Bob > Bill(理想情况下,当它尝试转到已遍历的节点时,它只会停在Matt处)

sql postgresql common-table-expression recursive-query
1个回答
1
投票

您正在寻找递归CTE

数据样本

CTE

查询

CREATE TEMPORARY TABLE t 
(id INT, manager_id INT, name TEXT);
INSERT INTO t VALUES 
(1,2,'Matt'),(2,1,'Simon'),
(3,1,'John'),(4,2,'Bob'),
(5,4,'Bill');
© www.soinside.com 2019 - 2024. All rights reserved.