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

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

Linda Hamilton
Linda Hamilton原创
2024-12-31 17:27:10225浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn