在SQL中的`group by`中聚合字符串?

时间:2012-11-17 14:56:37

标签: mysql sql

考虑以下架构:

create table A
(
    id int primary id
)

create table B
(
    a_id int,
    s varchar(255)
)

然后是以下查询:

select A.id, sum(1), ??? concat_join(B.s) ???
from A left join B on A.id = B.a_id group by A.id

A和B之间存在1对多的关系,因此多行将被分组为一个。 “concat_join”的所需行为将是组中的每个B.通过连接它们(可能与空格分隔符)将它们连接成一个单独的字符串。

有什么方法可以表达这是MySQL 5.5吗?

1 个答案:

答案 0 :(得分:4)

使用GROUP_CONCAT

select A.id, sum(1), GROUP_CONCAT(B.s)
from A left join B on A.id = B.a_id 
group by A.id

默认情况下,字符串由逗号分隔。如果您想更改它,请添加SEPARATOR关键字

select A.id, sum(1), GROUP_CONCAT(B.s SEPARATOR ';')
from A left join B on A.id = B.a_id 
group by A.id