Как сжать несколько строк с помощью 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;
Другие вопросы по тегам