0

我有一张像这样的桌子:

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

现在我想根据每个单独的键的列“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

如果我能得到一些关于分组查询设计的建议,这将有很大的帮助,这可以给我如上所示的结果

多谢

4

1 回答 1

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 ║
╚════╩═════╩════════════╩═════════╩═══════╝
于 2013-04-10T08:49:24.520 回答