使用 MySQL
,我可以这样做:
SELECT hobbies FROM peoples_hobbies WHERE person_id = 5;
我的输出:
shopping
fishing
coding
但我只想要一行,一列:
预期产量:
shopping, fishing, coding
原因是我从多个表中选择了多个值,在所有的连接之后,我得到了比我想要的更多的行。
我在mysql doc上找了一个函数,它看起来不像 CONCAT
或者 CONCAT_WS
函数接受结果集。
有人知道怎么做吗?
11条答案
按热度按时间68bkxrlz1#
看一看
GROUP_CONCAT
如果您的mysql版本(4.1)支持它。有关更多详细信息,请参阅文档。它看起来像:
qmelpv7a2#
您可以更改
GROUP_CONCAT
通过设置group_concat_max_len
参数。详见mysql文档。
xpszyzbs3#
有一个组聚合函数,groupconcat。
wwwo4jvm4#
你可以用
GROUP_CONCAT
:正如路德维希在评论中所说,你可以添加
DISTINCT
操作员避免重复:正如jan在他们的评论中所说的,您还可以在使用
ORDER BY
:正如dag在评论中所说的,结果有1024字节的限制。要解决此问题,请在查询之前运行此查询:
当然,你可以改变
2048
根据你的需要。计算并赋值:ux6nzvsh5#
我们有两种方法来连接mysql中的列
或
syqv5f0l6#
有人在看如何使用
GROUP_CONCAT
使用子查询-发布此示例所以呢
GROUP_CONCAT
必须在子查询内部使用,而不是 Package 它。6g8kf2rb7#
在我的例子中,我有一行ID,必须将其转换为char,否则,结果被编码为二进制格式:
monwx1rj8#
使用mysql(5.6.13)会话变量和赋值运算符,如下所示
然后你就可以
yfwxisqw9#
我有一个更复杂的查询,发现我必须使用
GROUP_CONCAT
在外部查询中使其工作:原始查询:
内爆:
希望这能帮上忙。
6ss1mwsb10#
试试这个:
46qrfjad11#
连接多个单独行的替代语法
警告:这个帖子会让你饿的。
给出:
我发现自己想要选择多个单独的行,而不是一个组,并在某个字段上连接。
假设您有一个产品ID及其名称和价格表:
然后你有一些花哨的schmancyajax把这些小狗列为复选框。
你饥饿的河马用户选择
13, 15, 16
. 今天没有甜点给她。。。查找:
一种用纯mysql将用户订单汇总成一行的方法。
解决方案:
使用
GROUP_CONCAT
和IN
条款:输出:
奖励解决方案:
如果你也要总价,就投进去吧
SUM()
: