首頁 >資料庫 >mysql教程 >如何在 PostgreSQL 中使用陣列參數多次呼叫傳回集合的函數?

如何在 PostgreSQL 中使用陣列參數多次呼叫傳回集合的函數?

Linda Hamilton
Linda Hamilton原創
2024-12-31 17:27:10227瀏覽

How to Call a Set-Returning Function Multiple Times with Array Arguments in PostgreSQL?

多次調用帶有數組參數的集合返回函數

您有一個函數,它處理具有給定參數的行數組,並且傳回一組帶有附加列的行。

問題:如何在不向函數傳遞 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn