sql:почему запрос повторяет значения при использовании 'GROUP CONCAT' + 'GROUP BY'?

StackOverflow https://stackoverflow.com/questions/1154029

Вопрос

Запрос:

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       

Таблица в

MemberName             FruitName
---------------        --------------
Al                     Apple
Al                     Mango
A2                     Cherry

Результирующий вывод из приведенного выше запроса:

MemberId    MemberName  GROUP_CONCAT(FruitName)
3           A2          Cherry
1           A1          Apple,Apple,Mango,Mango

Фактические таблицы, которые я использую, содержат по 10 столбцов в каждой, поэтому простое хранение всего в одной таблице не является обходным решением.Тем не менее, как я могу изменить запрос так, чтобы он возвращал только 'Apple,Mango' для MemberName?

Это было полезно?

Решение

Добавьте ключевое слово ОТЧЕТЛИВЫЙ к сгруппированному столбцу:

GROUP_CONCAT(DISTINCT FruitName)

Другие советы

попробуй

GROUP_CONCAT(Distinct FruitName)
SELECT  MemberId, a.MemberName, GROUP_CONCAT(DISTINCT FruitName)
FROM    a
LEFT JOIN
        b
ON      a.MemberName = b.MemberName
GROUP BY
        a.MemberName
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top