不同的组只消除一个结果

时间:2013-07-03 05:21:06

标签: mysql group-by distinct

我和我以前的问题几乎相同。

表1

id    client_name   Group_id     
------------------------------
1     IBM               1
2     DELL              1   
3     DELL              2
4     MICROSOFT         3 
5     DELL              2
6     MICROSOFT         2
7     HP                3 

表2

id    group_name
------------------
1     Group1      
2     Group2     
3     Group3  

使用以下查询。

SELECT Client_name, GROUP_CONCAT(distinct(group_name)) merge_group
FROM Table1 t1
JOIN Table2 t2
  ON t1.group_id = t2.id
GROUP BY t1.Client_name
ORDER BY t1.Id

将由此产生

client_name      merge_group   
-------------------------
IBM                Group1
DELL               Group1,Group2
MICROSOFT          Group3,Group2
HP                 Group3

现在我的问题是我如何才能消除那些只有一个组名。

结果就像这样

client_name      merge_group   
-------------------------
DELL               Group1,Group2
MICROSOFT          Group3,Group2

1 个答案:

答案 0 :(得分:3)

您可以使用mysql having子句来消除具有特定属性的分组类。

在您的情况下,您希望根据merge_group的计数消除分组数据,您可以按如下方式进行: -

SELECT Client_name, GROUP_CONCAT(distinct(group_name)) merge_group , count(distinct(group_name)) as num_groups
FROM Table1 t1
JOIN Table2 t2
  ON t1.group_id = t2.id
GROUP BY t1.Client_name
ORDER BY t1.Id having num_groups>1