【问题标题】:MySQL group_concat with 2 joins returns unwanted results具有 2 个连接的 MySQL group_concat 返回不需要的结果
【发布时间】:2010-11-05 12:06:19
【问题描述】:

执行此查询时,我希望得到 2 个手机号码和 1 个类别,而不是我得到 2 个类别,我做错了什么? 我想这与我加入事物的方式有关?

用户,可以有多个imei, categoryjoin 将用户链接到多个类别

SELECT 
    u.*, 
    group_concat(i.mobilenumber) as mobilenumbers,
    group_concat(c.name) as categories 
FROM 
    users AS u 
INNER JOIN 
    categoryjoin AS cj 
ON 
    u.uid = cj.user_id 
INNER JOIN 
    categories AS c 
ON 
    cj.category_id = c.uid 
INNER JOIN 
    imei AS i 
ON
    u.uid = i.user_id
GROUP BY 
    u.uid

非常感谢您的帮助!

【问题讨论】:

    标签: mysql group-by join group-concat


    【解决方案1】:

    如果用户匹配一个类别,但匹配imei中的2行,则该类别将在结果集中重复。您可以使用 DISTINCT 删除 group_concat 中的冗余值:

    SELECT 
        u.*, 
        group_concat(distinct i.mobilenumber) as mobilenumbers,
        group_concat(distinct c.name) as categories 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-22
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-05
      相关资源
      最近更新 更多