Ответ 1
GROUP_CONCAT(DISTINCT g.value)
У меня есть запрос, который объединяет строки, если они принадлежат к одной группе.
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, ',')
дает этот результат.
ласковые отношения, ласковые отношения, ласковые отношения, ласковые отношения, любящие отношения, любящие отношения, любящие отношения, любящие отношения
Как вы можете видеть, в конкатенации есть дубликаты. Как избежать дублирования в конкатенациях?
GROUP_CONCAT(DISTINCT g.value)
Вам необходимо удалить дубликаты перед применением GROUP_CONCAT, для которого обычно требуется подзапрос:
SELECT a, GROUP_CONCAT(b)
FROM (SELECT DISTINCT a, b
FROM MyTable)
GROUP BY a