sql - PostgreSQL:将查询返回应用于函数

标签 sql postgresql common-table-expression

我有一个递归方法定义如下:

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/

相关文章:

c# - DataTable 修改日期格式 - 为什么?

sql - 在 Postgresql 上配对顺序事件

android - 如何先按文本排序,然后按包含数字的文本排序

django - 我应该将 docker-compose 创建的/data 文件夹包含到 Git 中吗?

c# - Npgsql参数化语句

sql - 使用 CTE 显示数据中的传递关系

sql - 模拟 access 中没有主表的子查询

postgresql - greenplum 数据库错误 : relation does not exist,

MYSQL CTE 递归更新

sql-server - 跳过或添加 where 条件,直到得到行数 1 作为结果