ホームページ > データベース > mysql チュートリアル > PostgreSQL で複数の行にわたって値を連結するにはどうすればよいですか?

PostgreSQL で複数の行にわたって値を連結するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-21 09:22:14
オリジナル
202 人が閲覧しました

How Can I Concatenate Values Across Multiple Rows in PostgreSQL?

PostgreSQL データ行値接続

リレーショナル データベースの操作では、多くの場合、最終結果を取得する前にデータを処理する必要があります。一般的なタスクは、共通の識別子に基づいて複数の行の値を連結することです。 PostgreSQL では、GROUP_CONCAT 関数がこれに対する簡単な解決策を提供します。

GROUP_CONCAT 関数

PostgreSQL バージョン 9.0 以降では、GROUP_CONCAT集計関数が導入されました。この関数は、列内の値のセットを取得し、それらを 1 つの文字列に連結します。 GROUP_CONCAT の構文は次のとおりです:

<code class="language-sql">GROUP_CONCAT(DISTINCT expression [ORDER BY expression] [separator])</code>
ログイン後にコピー

パラメータ:

  • DISTINCT: (オプション) 重複した値が結果に含まれないようにします。
  • expression: 結合する列または式。
  • ORDER BY: (オプション) 値を連結する順序を指定します。
  • separator: (オプション) 連結された値を区切るために使用される文字または文字列。デフォルトはカンマ(,)です。

「sample_data」という名前の次のテーブルについて考えてみましょう:

id value
TM67 4
TM67 9
TM67 72
TM99 2
TM99 3

一意の「id」ごとに「value」列の値を結合するには、次のように GROUP_CONCAT を使用できます:

<code class="language-sql">SELECT id, GROUP_CONCAT(value) AS concatenated_values
FROM sample_data
GROUP BY id;</code>
ログイン後にコピー

このクエリは次の出力を生成します:

id concatenated_values
TM67 4,9,72
TM99 2,3

ご覧のとおり、各「id」の値が連結され、カンマで区切られています。

PostgreSQL 9.0 の代替構文

PostgreSQL バージョン 9.0 以降では、GROUP_CONCAT の代替構文を使用できます:

<code class="language-sql">SELECT id, string_agg(value, ',') AS concatenated_values
FROM sample_data
GROUP BY id;</code>
ログイン後にコピー

この構文は、上記の GROUP_CONCAT 構文と同等です。

結論

PostgreSQL では、GROUP_CONCAT 関数または string_agg 関数を使用して、複数のデータ行を簡単に結合できます。 どの構文を選択するかは、PostgreSQL のバージョンと個人的な好みによって異なります。

以上がPostgreSQL で複数の行にわたって値を連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート