2013-07-03 20 views
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 
+0

只需添加'HAVING'條款。例如'.... GROUP BY t1.Client_name HAVING COUNT(distinct group_name)> 1' –

回答

3

您可以使用具有MySQL的條款,以消除具有特殊性能組合類。

你的情況,你想消除基於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 
+0

不錯,非常好!非常感謝你 –