【问题标题】: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 列,因此仅将所有内容存储在一个表格中并不是一种解决方法。也就是说,我怎样才能将查询更改为只为MemberName 返回'Apple,Mango'

【问题讨论】:

    标签: sql group-by left-join group-concat


    【解决方案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
        

        【讨论】:

          猜你喜欢
          • 2022-09-22
          • 2011-06-21
          • 2018-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多