Как избежать дублирования в 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, который обычно требует подзапроса:
SELECT a, GROUP_CONCAT(b)
FROM (SELECT DISTINCT a, b
FROM MyTable)
GROUP BY a