ホームページ >データベース >mysql チュートリアル >PostgreSQLで配列引数を使用してセットを返す関数を複数回呼び出す方法は?

PostgreSQLで配列引数を使用してセットを返す関数を複数回呼び出す方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-31 17:27:10252ブラウズ

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

配列引数を使用して Set を返す関数を複数回呼び出す

指定されたパラメーターを使用して行の配列を処理する関数があり、追加の行セットを返します。

質問: 関数に 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;

foo() 関数が行を返せない場合、このフォームは、右側に行が返されない場合でも、結合の左側にあるすべての行を保持します。

関数が行を返せない場合、またはラテラル結合から結果のない行を除外したい場合は、 use:

CROSS JOIN LATERAL foo(sub.arr)

または、省略表現を使用できます:

, foo(sub.arr)

この方法は、Postgres 9.3 以降で推奨されます。以前のバージョンについては、他の利用可能なソリューションを参照してください。

以上がPostgreSQLで配列引数を使用してセットを返す関数を複数回呼び出す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。