我有一张表:
ID key familyname street pin
1 1 xxx abc 11
2 1 xxx acf 13
3 1 xxx1 acf 13
4 1 xxx1 bcf 12
5 2 yyy abc 11
6 2 yyy abc 11
7 2 yyy1 bcj 13
8 2 yyy1 bck 14
9 2 yyy2 btj 15
10 2 yyy2 byj 16
现在我想根据每个键的columnn“familyname”对street和pin进行分组。例如,我希望上表的输出为
ID key familyname street pin
1 1 xxx abc,acf 11,13
3 1 xxx1 acf,bcf 13,12
5 2 yyy abc,abc 11,11
7 2 yyy1 bcj,bck 13,14
9 2 yyy2 btj,byj 15,16
如果我可以得到关于分组查询设计的一些建议,这可能会给我一个如上所示的方式的结果,这将是非常有帮助的
非常感谢
答案 0 :(得分:3)
MySQL具有内置功能,可以为每个名为GROUP_CONCAT()
的组连接行。
SELECT MIN(ID) ID,
`key`,
familyName,
GROUP_CONCAT(street) street,
GROUP_CONCAT(pin) pin
FROM TableName
GROUP BY `key`, familyName
输出
╔════╦═════╦════════════╦═════════╦═══════╗
║ ID ║ KEY ║ FAMILYNAME ║ STREET ║ PIN ║
╠════╬═════╬════════════╬═════════╬═══════╣
║ 1 ║ 1 ║ xxx ║ abc,acf ║ 11,13 ║
║ 3 ║ 1 ║ xxx1 ║ acf,bcf ║ 13,12 ║
║ 5 ║ 2 ║ yyy ║ abc,abc ║ 11,11 ║
║ 7 ║ 2 ║ yyy1 ║ bcj,bck ║ 13,14 ║
║ 9 ║ 2 ║ yyy2 ║ btj,byj ║ 15,16 ║
╚════╩═════╩════════════╩═════════╩═══════╝