使用MySQL,我可以做如下操作:
SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;
我的输出:
shopping fishing coding
但是我只想要一行一列:
期望的输出:
shopping, fishing, coding
原因是我从多个表中选择多个值,而在所有的连接之后,我得到了比我想要的更多的行。
我在MySQL文档中查找了一个函数,看起来CONCAT或CONCAT_WS函数不接受结果集。
所以这里有人知道如何做到这一点吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
如果你的MySQL版本(4.1)支持,可以查看一下
GROUP_CONCAT。更多详细信息请参考文档。查询语句如下:
您可以使用
GROUP_CONCAT函数:正如Ludwig在他的评论中所述,您可以添加
DISTINCT运算符以避免重复:正如Jan在他们的评论中所述,您还可以在合并之前对值进行排序,使用
ORDER BY:SELECT person_id, GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id;正如Dag在他的评论中所述,结果有一个1024字节的限制。为了解决这个问题,在您的查询之前运行以下查询:
当然,您可以根据需要更改
2048的值。计算并分配值的方法如下:SET group_concat_max_len = CAST( (SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ') FROM peoples_hobbies GROUP BY person_id) AS UNSIGNED);