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|