ホームページ > データベース > mysql チュートリアル > PostgreSQL で複数のレコードのフィールド値を 1 つの ID で連結するにはどうすればよいですか?

PostgreSQL で複数のレコードのフィールド値を 1 つの ID で連結するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-21 09:32:16
オリジナル
338 人が閲覧しました

How to Concatenate Field Values in PostgreSQL for Multiple Records with a Single ID?

PostgreSQL で複数のレコードと 1 つの ID のフィールド値を連結する

多くのデータベース アプリケーションでは、単一の識別子に関連する複数の値を単一の接続文字列に結合する必要があります。この操作は、一意の ID ごとに複数のレコードを含むテーブルをクエリする場合に特に便利です。

MySQL の GROUP_CONCAT 関数

MySQL では、GROUP_CONCAT 関数がこの目標を達成する直接的な方法を提供します。ただし、GROUP_CONCAT 関数は PostgreSQL では直接使用できません。

GROUP_CONCAT に相当する PostgreSQL

PostgreSQL では、string_agg 関数は MySQL の GROUP_CONCAT に相当します。この関数を使用すると、連結された値を区切るための区切り文字 (カンマなど) を指定しながら文字列を連結できます。

例: string_agg を使用した PostgreSQL クエリ

元の質問で提供されたテーブルの例を考えてみましょう:

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

次の PostgreSQL クエリを使用して、一意の ID ごとに some_column 列の値を連結できます。

<code class="language-sql">SELECT
   id,
   string_agg(some_column::text, ',') AS values
FROM
   the_table
GROUP BY
   id;</code>
ログイン後にコピー

結果:

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

このクエリは、一意の ID ごとに 1 行を取得し、some_column 列の値をカンマを区切り文字として単一の文字列に連結します。

注: string_agg 関数は PostgreSQL バージョン 9.0 で導入されました。 PostgreSQL の以前のバージョンでは、generate_series または group_concat_agg 拡張機能を代わりに使用して、同じ機能を実現できます。 some_column::text の型変換により、some_column がテキスト型でない場合でも、正しく連結されることが保証されます。

以上がPostgreSQL で複数のレコードのフィールド値を 1 つの ID で連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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