2009-07-20 36 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 

表一个

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

表B

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

所得从上述查询输出:

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

实际表我正在使用每栏10列,因此只需将所有内容存储在一张表中不是一种解决方法。也就是说,如何将查询更改为只返回'Apple,Mango'MemberNam e?

回答

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)