0
,我有以下数据:在处理多个返回值的子查询
cte
=================
gp_id | m_ids
------|----------
1 | {123}
2 | {432,222}
3 | {123,222}
而且具有这样的特征(这其实不是返回一个表,但一对夫妇的id)函数:
FUNCTION foo(m_ids integer[])
RETURNS TABLE (
first_id integer,
second_id integer
)
现在,我必须遍历每一行和与该功能进行一些计算,所以我会得到这样的事情:
gp_id | first_id | second_id
------|----------|-----------
1 | 25 | 25
2 | 13 | 24
3 | 25 | 11
为了实现这个目标我尝试下面的代码:
SELECT gp_id,
(
SELECT *
FROM foo(
(
SELECT m_ids
FROM cte c2
WHERE c2.gp_id = c1.gp_id)) limit 1)
FROM cte c1
的问题是在SELECT *
声明。如果我使用SELECT first_id
,一切正常(除了我要跑两个连续的查询,我想避免,显然这),但在前者的情况下,我发现了错误
子查询必须只返回一列
这是有点期待的。
那么我怎样才能正确迭代在一个单一的查询表中?
非常感谢你,这是非常有帮助的! –