我有一个包含以下列的表:

boxid - nouns - username

1 - w1,w2,w3 - user1
1 - w3,w2,w4 - user2
1 - w1,w8,w5 - user1
2 - w7,w2,w5 - user2

目前我有一个查询,它允许我提取以下内容:
SELECT boxid, group_concat(concat(username,":",nouns) SEPARATOR "|") as listn
FROM table group by boxid;

这个问题告诉我:
box1 - user1:w1,w2,w3|user2:w3,w2,w4|user1:w1,w8,w5

但是,我希望得到同一用户的所有名词,而不重复用户(但重复每个用户的单词),如下所示:
box1 - user1:w1,w2,w3,w1,w8,w5|user2:w3,w2,w4

有人能告诉我这是否可以用mysql完成,以及如何完成?我不知道。。。
(我可以用php来实现这一点,但我认为在sql中获得直接结果会更快…)
提前谢谢。。。

最佳答案

试试这个:

SELECT boxid, group_concat(concat(username,":",nouns_list) SEPARATOR "|") as listn
  FROM
    (
    SELECT boxid, username, group_concat(nouns)  as nouns_list
        FROM table
    GROUP BY boxid, username
) a
GROUP BY boxid

关于mysql - 复杂的分组MySQL语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7005173/

10-13 22:55