Как избежать дублирования в GROUP_CONCAT?

У меня есть запрос, который объединяет строки, если они принадлежат к одной группе.

    SELECT e.id, 
        ke.value,
        re.value AS re_value,
        GROUP_CONCAT(g.value,', ')
        FROM entry e
                INNER JOIN k_ele ke ON e.id = ke.fk
                INNER JOIN r_ele re ON e.id = re.fk
                INNER JOIN sense s ON e.id = s.fk
                INNER JOIN gloss g ON s.id = g.fk
WHERE g.lang IS NULL
GROUP BY s.id
ORDER BY re_value

Но

GROUP_CONCAT(g.value,', ')

дает этот результат.

Ласковые отношения, Ласковые отношения, Ласковые отношения, Ласковые отношения, Любовные отношения, Любовные отношения, Любовные отношения, Любовные отношения

Как видите, в конкатенации есть дубликаты. Как избежать дублирования в конкатенациях?

2 ответа

Решение
GROUP_CONCAT(DISTINCT g.value)

Вы должны удалить дубликаты перед применением GROUP_CONCAT, который обычно требует подзапроса:

SELECT a, GROUP_CONCAT(b)
FROM (SELECT DISTINCT a, b
      FROM MyTable)
GROUP BY a
Другие вопросы по тегам