我有一个递归方法定义如下:
with recursive temp(id, s, r, e) as (
select *
from rel
where rel_to_id = <parameter from sql query>
union all
select *
from temp P
inner join relationship C on P.r = C.s
)
并且我需要在从 SQL 查询返回的每一行上调用它,该查询具有在递归查询中定义的列值(标记为 )
我真的不想通过 python 调用 X 查询,这会减慢速度,必须有一种方法可以在 sql 中完成。我试图在 plpgsql 中编写一个函数,但我在定义返回类型 setof TABLE 并每次都取它的并集时遇到了问题。
最佳答案
我不确定我是否完全理解这个问题,您的问题是根据您的返回值调用超过 1 个初始值的递归函数吗?
在那种情况下,您能否立即创建包含所有必需值的初始表,然后递归遍历它?像这样:
with recursive temp(id, s, r, e) as (
select *
from rel r
join <sql query> q on r.rel_to_id = q.id
union all
select *
from temp P
inner join relationship C on P.r = C.s
)
关于sql - PostgreSQL:将查询返回应用于函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7482439/