我和我以前的问题几乎相同。
表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
答案 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