SQLのGROUP_CONCAT関数の使い方は何ですか?
GROUP_CONCAT関数は、指定された区切り文字で複数行のデータを一つの文字列に結合するための関数です。その文法は以下の通りです:
GROUP_CONCAT([DISTINCT] expr [, expr ...]
[ORDER BY {unsigned_integer | col_name | expr}
[ASC | DESC] [, col_name ...]]
[SEPARATOR str_val])
パラメーターの説明:
- DISTINCT:重複を排除するオプションで、DISTINCTが指定されている場合にのみ、関数は重複した値を返さない。
- 要結合するフィールドは、列名、定数、または式のいずれかである必要があります。
- ORDER BYは任意の選択肢で、データをマージする前の並び替えルールを示します。
- 昇順または降順:選択可能なオプションで、デフォルトは昇順です。
- SEPARATORはオプションで、結合された文字列内の区切り文字を示します。デフォルトはカンマです。
例えば、生徒のデータが含まれている学生テーブルがあるとします。
+----+-------+---------+
| id | name | class |
+----+-------+---------+
| 1 | Alice | Math |
| 2 | Bob | English |
| 3 | Alice | Science |
+----+-------+---------+
同じ名前の学生のクラスを1つの文字列に結合するには、GROUP_CONCAT関数を使用します。例えば:
SELECT name, GROUP_CONCAT(class) AS classes
FROM students
GROUP BY name;
上記のクエリ文を実行すると、以下の結果が得られます。
+-------+-----------------+
| name | classes |
+-------+-----------------+
| Alice | Math,Science |
| Bob | English |
+-------+-----------------+
同じ名前の学生たちのクラスは、すでに1つの文字列に結合され、カンマで区切られています。