MySQLのgroup_concatの使い方

GROUP_CONCAT 関数は、1つの列の複数の値を1つの文字列に連結し、区切り文字を使用してこれらの値を区切ることができます。

文法: 構文

GROUP_CONCAT([DISTINCT] expr [,expr ...]
            [ORDER BY {unsigned_integer | col_name | expr}
                [ASC | DESC] [,col_name ...]]
            [SEPARATOR str_val])

パラメーター説明:

  1. DISTINCTは、重複する値を除外するためのオプションです。
  2. expr: 連結する列または式。
  3. ORDER BYはオプションのパラメータで、結合された値を並べ替えるために使用されます。
  4. ASCまたはDESC:ソートの順序を指定するオプションパラメータであり、デフォルトでは昇順でソートされます。
  5. SEPARATOR:オプションのパラメータで、接続する区切り文字を指定するために使用します。デフォルトはカンマ「,」です。

例えば、以下のstudentsテーブルがあるとします。

ID名前科目1
ジョン
数学2
ジェーン
理科3
アリス
数学4
ボブ
歴史5
トム
理科

  1. 全ての学生の名前をリンクします。
SELECT GROUP_CONCAT(name) AS all_names FROM students;

John、Jane、Alice、Bob、Tom を出力します。

  1. すべての学生の名前をセミコロンで区切って繋げてください。
SELECT GROUP_CONCAT(name SEPARATOR ';') AS all_names FROM students;

ジョン、ジェーン、アリス、ボブ、トム

  1. 全ての生徒が学んだ科目をつなぎ合わせ、アルファベット順に並べ替える。
SELECT GROUP_CONCAT(DISTINCT subject ORDER BY subject ASC) AS all_subjects FROM students;

出力:歴史、数学、科学 (Rekishi, Suugaku, Kagaku)

bannerAds