2009-07-20 3 views
2

クエリ:sql: 'GROUP CONCAT' + 'GROUP BY'を使用すると、クエリで繰り返し値が表示されるのはなぜですか?

SELECT MemberId, a.MemberName, GROUP_CONCAT(FruitName) FROM a LEFT JOIN b ON 
a.MemberName = b.MemberName GROUP BY a.MemberName 

表クエリ上記の出力を得られ

MemberName    FruitName 
---------------  -------------- 
Al      Apple 
Al      Mango 
A2      Cherry 

B

MemberID   MemberName    
-------------- ---------- 
1     Al     
1     Al  
3     A2  

表:

MemberId MemberName GROUP_CONCAT(FruitName) 
3   A2   Cherry 
1   A1   Apple,Apple,Mango,Mango 

実際テーブル私は1つのテーブルにすべてを格納するだけで回避策ではないので、私は10列1つを使用して使用しています。つまり、MemberNamの場合は'Apple,Mango'を返すようにクエリを変更するにはどうすればいいですか?

答えて

8

グループ化された列にキーワードDISTINCTを追加します。

GROUP_CONCAT(DISTINCT FruitName) 
3
SELECT MemberId, a.MemberName, GROUP_CONCAT(DISTINCT FruitName) 
FROM a 
LEFT JOIN 
     b 
ON  a.MemberName = b.MemberName 
GROUP BY 
     a.MemberName 
5

GROUP_CONCAT(Distinct FruitName) 
を試してみてください
関連する問題