考虑以下架构:
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吗?
答案 0 :(得分:4)
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