ホームページ >データベース >mysql チュートリアル >PostgreSQLでオブジェクトのJSON配列として同じ行から複数​​の列を返す方法は?

PostgreSQLでオブジェクトのJSON配列として同じ行から複数​​の列を返す方法は?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-14 22:01:49544ブラウズ

How to Return Multiple Columns from the Same Row as a JSON Array of Objects in PostgreSQL?

PostgreSQL で複数の列をオブジェクトの JSON 配列として返す

PostgreSQL は、データをオブジェクトの JSON 配列としてクエリおよびフォーマットし、結果を特定の列ごとにグループ化するためのいくつかのアプローチを提供します。 以下に、さまざまな PostgreSQL バージョンのメソッドの内訳を示します。

PostgreSQL 10 以降

集約された JSON オブジェクトから特定のキーを削除するには、集約の前に - 演算子を使用します。 オーバーロードされた関数のあいまいさを解決するには、text[] への明示的なキャストが必要です:

<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb(t.*) - '{id, val2}'::text[]) AS js_34
FROM   tbl
GROUP  BY val2;</code>

PostgreSQL 9.4 以降

jsonb_build_object() を使用して、キーと値のペアから JSON オブジェクトを構築します。

<code class="language-sql">SELECT val2, jsonb_agg(jsonb_build_object('val3', val3, 'val4', val4)) AS js_34
FROM   tbl 
GROUP  BY val2;</code>

PostgreSQL 9.3 以降

ROW 式またはサブクエリで to_jsonb() を使用して、オブジェクトの配列を生成します。

<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb((val3, val4))) AS js_34
FROM   tbl
GROUP  BY val2;</code>

または:

<code class="language-sql">SELECT val2, jsonb_agg(to_jsonb((SELECT t FROM (SELECT val3, val4) t))) AS js_34
FROM   tbl
GROUP  BY val2;</code>

これらのメソッドは、データを取得して構造化し、値をグループ化し、単一行から複数​​の列を表すオブジェクトの JSON 配列を作成する効率的な方法を提供します。

以上がPostgreSQLでオブジェクトのJSON配列として同じ行から複数​​の列を返す方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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