foo_id foo_name 1 A 1 B 2 C
到此:
#1 楼
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat
从上面的链接,
GROUP_CONCAT
:此函数返回一个字符串结果,其中包含来自组的串联的非NULL值。如果没有非NULL值,则返回NULL。#2 楼
SELECT id, GROUP_CONCAT( string SEPARATOR ' ') FROM table GROUP BY id
这里有更多详细信息。
从上面的链接,
GROUP_CONCAT
:该函数返回一个字符串结果,其中包含来自组的串联非NULL值。如果没有非NULL值,则返回NULL。评论
结果列的字符数有限制。看到这里和文档:)
–马洛
16年1月26日在9:53
#3 楼
SELECT id, GROUP_CONCAT(CAST(name as CHAR)) FROM table GROUP BY id
会给您一个逗号分隔的字符串
#4 楼
SELECT id, GROUP_CONCAT(name SEPARATOR ' ') FROM table GROUP BY id;
:-
在MySQL中,您可以获得表达式组合的串联值
。若要消除重复的值,请使用DISTINCT子句。要对结果中的值进行排序,请使用ORDER BY子句。要以相反的顺序进行排序,请在ORDER BY子句中将DESC(降序)关键字添加到要作为排序依据的列的名称。默认为升序;这可以使用ASC关键字明确指定。组中值之间的默认分隔符是逗号(“,”)。要明确指定分隔符,请使用SEPARATOR,后跟应该在组值之间插入的字符串文字值。要完全消除分隔符,请指定SEPARATOR。。
#5 楼
结果被截断为group_concat_max_len系统变量给定的最大长度,该默认值的默认值为1024个字符,因此我们首先执行以下操作:,例如:
SET group_concat_max_len=100000000;
评论
结果将被截断为由group_concat_max_len系统变量指定的最大长度,该默认值的默认值为1024个字符。 docs
–马洛
16 Jan 26'9:48
此group_concat_max_len配置的范围是什么?当前的连接/会话,还是会影响其他客户端?
–冷冻火焰
16年6月28日在8:34
@FrozenFlame:>如果不存在修饰符,则SET更改会话变量。如果变量没有会话值,则会发生错误。来自dev.mysql.com/doc/refman/5.7/en/using-system-variables.html
– arminrosu
17-2-16在12:56
这不会回答OP的问题,而只会添加有用的信息。这应该是评论,而不是答案。
–西恩·比恩(Sean the Bean)
17年12月7日14:49在
感谢您提供此代码段,它可能会提供一些有限的即时帮助。通过说明为什么这是一个很好的解决方案,正确的解释将大大提高其长期价值,对于其他存在类似问题的读者来说,这样做将更为有用。请修改您的答案以添加一些解释,包括您所做的假设。
–唐老鸭
17年12月13日在22:39
#6 楼
很好的答案。我也遇到了NULLS问题,并设法通过在GROUP_CONCAT内包含一个COALESCE来解决了这个问题。示例如下:
SELECT id, GROUP_CONCAT(COALESCE(name,'') SEPARATOR ' ')
FROM table
GROUP BY id;
希望对别人有帮助
评论
DOWNVOTE命名列字符串确实很容易混淆,它给它一个看起来像数据类型的名称。因此,任何答案也都会受到影响,因为答案在指定列名称时看起来就像是在指定数据类型@barlop通过编辑问题和答案来解决该问题。