この関数は、グループからの連結された非 NULL
値を伴うストリング結果を戻します。非 NULL
値がない場合は NULL
を戻します。全構文は次の通りです :
GROUP_CONCAT([DISTINCT]expr
[,expr
...] [ORDER BY {unsigned_integer
|col_name
|expr
} [ASC | DESC] [,col_name
...]] [SEPARATORstr_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. 「文字列関数」.