文档地址:http://dev.mysql.com/doc/refman/5.6/en/group-by-functions.html#function_group-concat
该函数以源自于一个分组的被拼接的非空值返回一个字符串结果。如果没有非空值它返回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”子句。颠倒排序,给“ORDER BY”子句中你要排序的字段名加上“DESC”(descending)关键字。默认是升序排序,这可以通过关键字“ASC”显式指定。一个分组的值之间的默认分隔符是逗点(“,”)。显式指定分隔符,使用尾随可以被插入分组值之间字面义字符串的“SEPARATOR”关键字。完全消除分割,指定“SEPARATOR”为''。
超出系统变量“group_concat_max_len”所给出的最大长度的结果值被截断,该默认值为1024。这个值可以设置的更大一些,不过返回值的实际最大长度受“ max_allowed_packet”值的约束。服务器运行时修改“group_concat_max_len”值的语法如下,其“val”是一个无符号整值:
SET [GLOBAL | SESSION] group_concat_max_len = val;
返回值是一个二进制或非二进制字符串,这取决于参数是否是二进制或非二进制字符串。除非“group_concat_max_len”小于等于512,此时结果类型是“VARCHAR”或者“VARBINARY”,否则结果类型是“TEXT”或“BLOB”。
参见“CONCAT()”和“CONCAT_WS()”:章节12.5,“String Functions”。