在单个表上写递归查询

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

我想在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    
postgresql recursive-query
1个回答
0
投票

这是一个非常简单的解决方案,但我认为它应该适用于较小的数据集

  SELECT * FROM employee
  WHERE 
    status=12
    OR id IN (
      SELECT DISTINCT parentId FROM employee WHERE status=12
    )
`
© www.soinside.com 2019 - 2024. All rights reserved.