ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。