2010-11-05 27 views
0

当执行这个查询时,我期望得到2个移动数字和1个类别,而我得到2个类别,我做错了什么? 我想这与我加入事物的方式有关?带有2个连接的MySQL group_concat返回不需要的结果

用户,可以有多个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 

大预先感谢您的帮助!

回答

2

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

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