首页 > 数据库 > mysql教程 > 如何在 PostgreSQL 中使用数组参数多次调用返回集合的函数?

如何在 PostgreSQL 中使用数组参数多次调用返回集合的函数?

Linda Hamilton
发布: 2024-12-31 17:27:10
原创
255 人浏览过

How to Call a Set-Returning Function Multiple Times with Array Arguments in PostgreSQL?

多次调用带有数组参数的集合返回函数

您有一个函数,它处理具有给定参数的行数组,并且返回一组带有附加列的行。

问题:如何在不向函数传递 dataid 的情况下对不同的数据组多次调用此函数?

答案:

在 Postgres 9.3 或更高版本中,使用 LEFT JOIN LATERAL ... ON true 语法:

SELECT sub.dataid, f.*
FROM  (
   SELECT dataid, array_agg(data) AS arr
   FROM   dataset
   WHERE  dataid = something
   GROUP  BY 1
   ) sub
LEFT   JOIN LATERAL foo(sub.arr) f ON true;
登录后复制

如果 foo() 函数可以返回 no行,此形式将保留连接左侧的所有行,即使没有行返回到右侧。

如果函数无法返回任何行,或者如果您想排除没有结果的行横向连接,使用:

CROSS JOIN LATERAL foo(sub.arr)
登录后复制

或者,您可以使用简写:

, foo(sub.arr)
登录后复制

此方法推荐用于 Postgres 9.3 及更高版本。对于早期版本,请参考其他可用的解决方案。

以上是如何在 PostgreSQL 中使用数组参数多次调用返回集合的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板