我的表:
people
name person_id
Joe 1
Jack 2
tags
tag_id tag_name
1 blue
2 green
3 black
4 red
assignments
person_id tag_id
1 1
1 2
1 3
1 4
2 2
2 4
我想要的是如下结果:
结果
name tags
Joe blue,green.black,red
Jack green,red
这里的独特之处在于,第三个表要求我首先加入标签的名称,我不想将它们连接起来,而不是原始 ID...
最佳答案
使用 GROUP_CONCAT()方法结合 GROUP BY
SELECT name, GROUP_CONCAT(tag_id) FROM people GROUP BY name;
对于编辑的部分,试试这个:
SELECT p.name, GROUP_CONCAT(t.tag_name)
FROM people p
JOIN assignments a ON p.person_id=a.person_id
JOIN tags t ON t.tag_id=a.tag_id
GROUP BY a.person_id;
关于mysql - sql查询将可变数量的行合并为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32162380/