我想在Postgres的单个表上创建一个RECURSIVE查询,该表基本上基于父级和子级。
这里是演示表和数据
id parentid managerid status
------------------------------------
3741 [null] 1709 7
3742 3741 1709 12
3749 3742 1709 12
3900 3749 1709 4
1]如果Status = 12,则结果将是具有status = 12和该特定节点的所有parents的数据。
预期结果将是:
id parentid managerid status
--------------------------------------
3741 [null] 1709 7
3742 3741 1709 12
3749 3742 1709 12
2)如果Status!= 12,则结果将仅为该特定节点的所有parents。
预期结果将是:
id parentid managerid status
--------------------------------------
3741 [null] 1709 7
这是一个非常简单的解决方案,但我认为它应该适用于较小的数据集
SELECT * FROM employee
WHERE
status=12
OR id IN (
SELECT DISTINCT parentId FROM employee WHERE status=12
)
`