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])
パラメーター説明:
- DISTINCTは、重複する値を除外するためのオプションです。
- expr: 連結する列または式。
- ORDER BYはオプションのパラメータで、結合された値を並べ替えるために使用されます。
- ASCまたはDESC:ソートの順序を指定するオプションパラメータであり、デフォルトでは昇順でソートされます。
- SEPARATOR:オプションのパラメータで、接続する区切り文字を指定するために使用します。デフォルトはカンマ「,」です。
例えば、以下のstudentsテーブルがあるとします。
ID名前科目1
ジョン
数学2
ジェーン
理科3
アリス
数学4
ボブ
歴史5
トム
理科
- 全ての学生の名前をリンクします。
SELECT GROUP_CONCAT(name) AS all_names FROM students;
John、Jane、Alice、Bob、Tom を出力します。
- すべての学生の名前をセミコロンで区切って繋げてください。
SELECT GROUP_CONCAT(name SEPARATOR ';') AS all_names FROM students;
ジョン、ジェーン、アリス、ボブ、トム
- 全ての生徒が学んだ科目をつなぎ合わせ、アルファベット順に並べ替える。
SELECT GROUP_CONCAT(DISTINCT subject ORDER BY subject ASC) AS all_subjects FROM students;
出力:歴史、数学、科学 (Rekishi, Suugaku, Kagaku)