2010-11-05 32 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