1

我和我以前的问题几乎一样

表格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
4

1 回答 1

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
于 2013-07-03T05:29:57.800 回答