SQLのGROUP_CONCAT関数の使い方は何ですか?

GROUP_CONCAT関数は、指定された区切り文字で複数行のデータを一つの文字列に結合するための関数です。その文法は以下の通りです:

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

パラメーターの説明:

  1. DISTINCT:重複を排除するオプションで、DISTINCTが指定されている場合にのみ、関数は重複した値を返さない。
  2. 要結合するフィールドは、列名、定数、または式のいずれかである必要があります。
  3. ORDER BYは任意の選択肢で、データをマージする前の並び替えルールを示します。
  4. 昇順または降順:選択可能なオプションで、デフォルトは昇順です。
  5. 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つの文字列に結合され、カンマで区切られています。

bannerAds