多次調用帶有數組參數的集合返回函數
您有一個函數,它處理具有給定參數的行數組,並且傳回一組帶有附加列的行。
問題:如何在不向函數傳遞 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;
如果
如果如果
如果CROSS JOIN LATERAL foo(sub.arr)如果
如果
如果, foo(sub.arr)如果
如果
如果如果foo() 函數可以傳回no行,此形式將保留連接左側的所有行,即使沒有行返回右側。 如果函數無法傳回任何行,或者如果您想要排除沒有結果的行橫向連接,使用:或者,您可以使用簡寫:此方法推薦用於Postgres 9.3 及更高版本。對於早期版本,請參考其他可用的解決方案。以上是如何在 PostgreSQL 中使用陣列參數多次呼叫傳回集合的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!