Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 有没有一种方法可以通过改变输入来循环函数并合并所有结果?_Sql_Postgresql_Function_For Loop_Union All - Fatal编程技术网

Sql 有没有一种方法可以通过改变输入来循环函数并合并所有结果?

Sql 有没有一种方法可以通过改变输入来循环函数并合并所有结果?,sql,postgresql,function,for-loop,union-all,Sql,Postgresql,Function,For Loop,Union All,我有一个函数,它返回表中的产品信息。我想查询不同产品的此功能结果并汇总响应。最好的方法是什么? 到目前为止,我已经这样做了,但我希望有一种方法可以循环函数,给出一个产品列表作为输入: SELECT name, key, value FROM infofunc_v1('whitepasta') UNION ALL SELECT name, key, value FROM infofunc_v1('darkpasta') 堆栈中的第一个帖子。感谢所有的建议,祝你度过愉快的一天 您可以使用横向连接:

我有一个函数,它返回表中的产品信息。我想查询不同产品的此功能结果并汇总响应。最好的方法是什么?
到目前为止,我已经这样做了,但我希望有一种方法可以循环函数,给出一个产品列表作为输入:

SELECT name, key, value
FROM infofunc_v1('whitepasta')
UNION ALL
SELECT name, key, value
FROM infofunc_v1('darkpasta')

堆栈中的第一个帖子。感谢所有的建议,祝你度过愉快的一天

您可以使用横向连接:

SELECT name, key, value
FROM (VALUES ('whitepasta'), ('darkpasta')) v(val) CROSS JOIN LATERAL
     infofunc_v1('whitepasta');

注意:如果您需要单个输入参数,
值可以是
最新(:array)
,因此您可以传入一个值数组。

感谢您的快速回复!在您的示例中,我在输入的末尾得到一个语法错误。你知道为什么会这样吗?与:FROM(VALUES(UNNEST(:array)))v(val)JOIN LATERAL infofunc_v1('white意大利面');:(@M2R10…这是一个带有简化函数的dbfiddle:。我相信交叉连接起了作用。非常感谢!@M2R10…LOL。
join
需要一个
ON
子句。这个问题与函数调用、数组或类似的东西无关。