PostgreSQL与继承

PostgreSQL与继承,postgresql,Postgresql,我有一张表格,格式如下: Table name : identities code |parent_code| _______|___________| AAA | Null | AAB | AAA | AAC | Null | AAD | AAC | AAE | AAB | 我需要一种方法来获取表中任何“代码”的最高父级 例如,如果我

我有一张表格,格式如下:

Table name : identities

    code   |parent_code|  
    _______|___________|
    AAA    |    Null   | 
    AAB    |    AAA    | 
    AAC    |    Null   | 
    AAD    |    AAC    | 
    AAE    |    AAB    |
我需要一种方法来获取表中任何“代码”的最高父级

例如,如果我想得到“code”
AAE
的最高父级,我会得到
AAA
,因为
AAE
的父级是
AAB
AAB
的父级是
AAA
,而
AAA
的父级是最高的,因为它没有父级

我的问题是我不能修改表,我不知道如何使用“with recursive”


提前感谢。

您可以使用递归cte,如下所示:

with recursive cte as (
    select code, parent_code, 1 lvl from identities where code = 'AAE'
    union all
    select i.code, i.parent_code, lvl + 1
    from identities i
    inner join cte c on c.parent_code = i.code 
)
select code 
from cte
where lvl = (select max(lvl) from cte)

| code | | :--- | | AAA | |代码| | :--- | |AAA|