Как избежать дублирования в 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, ',')

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

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

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

Ответы

Ответ 1

GROUP_CONCAT(DISTINCT g.value)

Ответ 2

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

SELECT a, GROUP_CONCAT(b)
FROM (SELECT DISTINCT a, b
      FROM MyTable)
GROUP BY a