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
,一切正常(除了我要跑兩個連續的查詢,我想避免,顯然這),但在前者的情況下,我發現了錯誤
子查詢必須只返回一列
這是有點期待的。
那麼我怎樣才能正確迭代在一個單一的查詢表中?
非常感謝你,這是非常有幫助的! –