Как сжать несколько строк с помощью concat
Скажем, у меня есть таблица COG в базе данных, и каждый COG в таблице COG может быть связан с одним или несколькими организмами во второй таблице. Если я просто присоединяюсь к ним, я в конечном итоге дублирую COG много раз для каждого организма.
Я хотел бы сгенерировать запрос, который вместо этого поместил бы каждый организм, связанный с данным COG, в одну строку, используя concat_ws() (то есть формат CSV).
Я пытался использовать: GROUP BY concat_ws(',', organism.name)
Но это не сработало.
Какие-либо предложения?
1 ответ
Решение
Вы ищете функцию GROUP_CONCAT:
SELECT c.ID, GROUP_CONCAT(o.name)
FROM COG c
INNER JOIN organism o
ON c.ID = o.COG_ID
GROUP BY c.ID;