ただし、MySQL とは異なり、PostgreSQL は group_concat() 関数をネイティブにサポートしません。したがって、このチュートリアルでは、string_agg() 関数を使用して同様の機能を実現する方法を検討します。
PostgreSQL String_Agg 関数
PostgreSQL の string_agg 関数を使用すると、複数の行の値を単一の文字列に連結し、指定されたパラメータで区切ることができます。
関数構文の使用法は次のようになります。
SELECT string_agg(column_name, 区切り文字)
FROM テーブル名
WHERE 条件
GROUP BY grouping_columns;
次の構文は次のように表現されます。
列名 – 列を連結する列の名前を指定します。
デリミタ – 入力値を結合するときに使用される区切り文字を定義します。
テーブル名 – データを含むターゲットテーブル。
グループ化_列 – 指定されたデータをグループ化するために使用される列を指定します。
PostgreSQL String_Agg 関数の例
この関数がどのように機能するかを説明するために、より実践的な例を見てみましょう。学生の情報を含むテーブルがあるとします。テーブルには、id、name、subject の 3 つの列が含まれています。
同じ科目に登録した学生の名前を連結したい場合は、string_agg 関数を使用できます。
SELECT 件名、string_agg ( 名前、 「、」 ) AS学生学生から
件名ごとにグループ化します。
指定されたクエリを実行すると、被験者と学生という 2 つの主要な列を含む結果セットが返されるはずです。学生には、各科目の学生の名前がカンマで区切られて連結されて含まれます。
ノート : string_agg 関数は、デフォルトで連結された値を並べ替えます。 string_agg 関数内に ORDER BY 句を追加して、元の順序を維持できます。
ほら、ありますよ! PostgreSQL の group_concat() 関数によって提供される同様の機能を実現する簡単で効率的な方法。
結論
この簡潔だが効果的なチュートリアルでは、PostgreSQL の string_agg 関数を使用して、MySQL の group_concat() 関数によって提供される同様の機能を実現する方法を学びました。