MySQL中有一个函数叫GROUP_CONCAT,它可以将查询结果拼接成一个字符串。
SELECT name, GROUP_CONCAT(score ORDER BY score DESC) FROM students GROUP BY name
这个查询语句将学生表中同名学生的成绩按降序排列,并用逗号分隔成一个字符串。
在GROUP_CONCAT函数中,第一个参数是要拼接的字段名,第二个参数是用来排序的规则,可以省略。默认情况下,GROUP_CONCAT函数是以逗号作为分隔符的。
SELECT name, GROUP_CONCAT(score SEPARATOR ';') FROM students GROUP BY name
如果要使用其他分隔符,可以在函数中使用SEPARATOR参数指定分隔符。
同时,需要注意的是,GROUP_CONCAT函数默认的最大长度是1024,如果超出这个限制,结果会被截断。可以使用以下语句来调整最大长度。
SET SESSION group_concat_max_len = 10000;
这样就可以将最大长度设为10000了。