postgresql联接表位于同一个表上,直到不再返回数据为止
我正在用pgsql编写一个函数。我有一个表a,表a的子列为。 使用这个查询,我可以得到一个孩子,但我需要所有的孩子,我不知道数据库中有多少孩子。 这只返回一行:postgresql联接表位于同一个表上,直到不再返回数据为止,postgresql,function,plpgsql,recursive-query,Postgresql,Function,Plpgsql,Recursive Query,我正在用pgsql编写一个函数。我有一个表a,表a的子列为。 使用这个查询,我可以得到一个孩子,但我需要所有的孩子,我不知道数据库中有多少孩子。 这只返回一行: SELECT * FROM A a INNER JOIN A a2 ON a2.id=a.child_of_a 这将返回两行: SELECT * FROM A a INNER JOIN A a2 ON a2.id=a.child_of_a INNER JOIN A a3 ON a3.id=a2.child_of_a 有没有
SELECT * FROM A a
INNER JOIN A a2
ON a2.id=a.child_of_a
这将返回两行:
SELECT * FROM A a
INNER JOIN A a2
ON a2.id=a.child_of_a
INNER JOIN A a3
ON a3.id=a2.child_of_a
有没有办法在不参加100次的情况下解决这个问题 您正在查找递归查询:
with tree as (
select *
from a
where id = ... --- this is your starting point
union all
select c.*
from a as c
join tree as p on c.child_of_a = p.id
)
select *
from tree;
有关更多详细信息,请参阅手册: