GROUP_CONCAT(expr)

GROUP_CONCAT(expr)

この関数は、グループからの連結された非 NULL 値を伴うストリング結果を戻します。非 NULL 値がない場合は NULL を戻します。全構文は次の通りです :

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])
mysql> SELECT student_name,
    ->     GROUP_CONCAT(test_score)
    ->     FROM student
    ->     GROUP BY student_name;

または :

mysql> SELECT student_name,
    ->     GROUP_CONCAT(DISTINCT test_score
    ->               ORDER BY test_score DESC SEPARATOR ' ')
    ->     FROM student
    ->     GROUP BY student_name;

MySQL では、式のコンビネーションの連結された値を得ることができます。DISTINCT を使用することで、重複した値を除くことが可能です。結果の値をソートしたい場合は、ORDER BY 句を使用してください。逆順でソートするには、DESC ( 降順 ) キーワードを、ORDER BY 句のソートするカラムの名前に加えてください。デフォルトでは昇順になっています。これは、ASC を使うことで明示的に指定することができます。SEPARATOR の後には、結果の値の間に挿入されるべきストリング値が続きます。デフォルトは コンマ ( ‘,’ ) です。SEPARATOR '' を使用すると、セパレータを一挙に取り除くことができます。

group_concat_max_len システム環境変数は、許可された最大の長さに設定することができます。 ( デフォルト値は 1024 ) 。ランタイムでこれを行う構文は次です。val は符号なしの整数になります :

SET [SESSION | GLOBAL] group_concat_max_len = val;

最大の長さが設定された場合、結果はその最大の長さに切り詰められます。

GROUP_CONCAT() によって戻されるタイプは、group_concat_max_len が 512 より大きい場合意外は常に VARCHAR になります。512 を越える場合は BLOB になります。

CONCAT() および CONCAT_WS() も併せてご覧ください : 項11.3. 「文字列関数」.