P粉3669463802023-08-23 12:03:30
如果你的MySQL版本(4.1)支持,可以查看一下GROUP_CONCAT
。更多详细信息请参考文档。
查询语句如下:
SELECT GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies WHERE person_id = 5 GROUP BY 'all';
P粉0020233262023-08-23 10:26:52
您可以使用GROUP_CONCAT
函数:
SELECT person_id, GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
正如Ludwig在他的评论中所述,您可以添加DISTINCT
运算符以避免重复:
SELECT person_id, GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
正如Jan在他们的评论中所述,您还可以在合并之前对值进行排序,使用ORDER BY
:
SELECT person_id, GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;
正如Dag在他的评论中所述,结果有一个1024字节的限制。为了解决这个问题,在您的查询之前运行以下查询:
SET group_concat_max_len = 2048;
当然,您可以根据需要更改2048
的值。计算并分配值的方法如下:
SET group_concat_max_len = CAST( (SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ') FROM peoples_hobbies GROUP BY person_id) AS UNSIGNED);