是否可以在MySQL中对行进行两次分组?

时间:2010-03-30 00:05:05

标签: mysql group-by

我有一张这样的表:

someid    somestring
1         Hello
1         World
1         Blah
2         World
2         TestA
2         TestB
...

目前我正在按ID分组并连接字符串,所以我最终得到了这个:

1         Hello,World,Blah
2         World,TestA,TestB
...

是否可以进行第二次分组,以便如果有多个条目以相同的字符串结尾,我也可以将它们分组?

1 个答案:

答案 0 :(得分:7)

是的,只需将当前查询放在内部选择中,然后将新的GROUP BY应用于外部选择。请注意,您可能希望使用GROUP_CONCAT的ORDER BY来确保字符串始终以相同的顺序连接。

SELECT somelist, COUNT(*) FROM
(
    SELECT
        someid,
        GROUP_CONCAT(somestring ORDER BY somestring) AS somelist
    FROM table1
    GROUP BY someid
) AS T1
GROUP BY somelist

结果:

'Blah,Hello,World', 1
'TestA,TestB,World', 2

这是我使用的测试数据:

CREATE TABLE table1 (someid INT NOT NULL, somestring NVARCHAR(100) NOT NULL);
INSERT INTO table1 (someid, somestring) VALUES
(1, 'Hello'),
(1, 'World'),
(1, 'Blah'),
(2, 'World'),
(2, 'TestA'),
(2, 'TestB'),
(3, 'World'),
(3, 'TestB'),
(3, 'TestA');