发布日期:2018-03-26
怎么才能把多个元组的数据集中到一个中去?+ 查看更多
怎么才能把多个元组的数据集中到一个中去?
+ 查看更多
发布日期:2018-02-23 09:55
分类:SQL
浏览次数:182
使用MySQL,我会这样做
SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;
就得到了:
shopping
fishing
coding
三条记录
但我想让它们放在一个元组中,像这样:
shopping, fishing, coding
因为我是从多个表中获取多个值,进行所有表连接操作后我得到了比我想要的更多的元组
我已经从MySQL的文档中找到了一个方法,但是它看起来并不像 CONCAT 和 CONCAT_WS 这两个方法一样能接受结果集
所以有谁知道怎么实现这个功能吗?
shopping
fishing
coding
三条记录
但我想让它们放在一个元组中,像这样:
shopping, fishing, coding
因为我是从多个表中获取多个值,进行所有表连接操作后我得到了比我想要的更多的元组
我已经从MySQL的文档中找到了一个方法,但是它看起来并不像 CONCAT 和 CONCAT_WS 这两个方法一样能接受结果集
所以有谁知道怎么实现这个功能吗?
回答:
你可以使用 GROUP_CONCAT
像这样:
像这样:
SELECT person_id, GROUP_CONCAT(hobbies SEPARATOR ', ') FROM peoples_hobbies GROUP BY person_id
注意:正如 Dag 在他的评论中提到的,这个办法得到的结果有 1024byte 的长度限制,
为了解决这个问题,你可以在查询之前先执行一下这个操作
为了解决这个问题,你可以在查询之前先执行一下这个操作
SET group_concat_max_len = 2048
当然,你可以根据需要自己调整这个限制