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
子句。这个问题与函数调用、数组或类似的东西无关。