sql:为啥使用'GROUP CONCAT'+'GROUP BY'时查询重复值?
Posted
技术标签:
【中文标题】sql:为啥使用\'GROUP CONCAT\'+\'GROUP BY\'时查询重复值?【英文标题】:sql: why does query repeat values when using 'GROUP CONCAT' + 'GROUP BY'?sql:为什么使用'GROUP CONCAT'+'GROUP BY'时查询重复值? 【发布时间】:2010-11-12 08:19:16 【问题描述】:查询:
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 列,因此仅将所有内容存储在一个表格中并不是一种解决方法。也就是说,我怎样才能将查询更改为只为MemberNam
e 返回'Apple,Mango'
?
【问题讨论】:
【参考方案1】:在分组列中添加关键字DISTINCT:
GROUP_CONCAT(DISTINCT FruitName)
【讨论】:
【参考方案2】:试试
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
【讨论】:
以上是关于sql:为啥使用'GROUP CONCAT'+'GROUP BY'时查询重复值?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 HAVING 和 GROUP_CONCAT 在此查询中不能一起工作?
使用 count 和 group_concat 编写 SQL 代码
如何在sql server中使用group_concat进行查询[重复]
如何在 sql [重复] 中使用 group_concat() 获取不同的值
Bigquery Standard Sql 等效于 Legacy Sql 中的 GROUP_CONCAT_UNQUOTED