如何在多列中使用 MySQL group_concat() 函数

How to use MySQL group_concat() function in more than one column

我有这个问题

SELECT de.id as id_evento,de.evento, dp.id as id_participante,
        dp.nombre as participante,pn.participacion,
        pn.id as id_participacion
                FROM difusion_evento de,difusion_evento_participante dep,difusion_participante dp,
                      difusion_participacion pn
                WHERE de.id=dep.difusion_evento_id
                  AND dep.difusion_participante_id=dp.id
                  AND dep.difusion_participacion_id=pn.id
                  AND de.id=5
                  ORDER BY 3,6

结果是:

id_evento    evento  id_participante     participante    participacion   id_participacion
5    5TO SEMINARIO PERMANENTE…  8    Name1   participante   2
5    5TO SEMINARIO PERMANENTE…  8    Name1   comentarista   4
5    5TO SEMINARIO PERMANENTE…  9    Name2   participante   2
5    5TO SEMINARIO PERMANENTE…  10   Name3   participante   2

但我希望结果如下所示:

id_evento    evento  id_participante     participante    participacion   id_participacion
5    5TO SEMINARIO PERMANENTE…  8    Name1   participante,comentarista  2, 4
5    5TO SEMINARIO PERMANENTE…  9    Name2   participante   2
5    5TO SEMINARIO PERMANENTE…  10   Name3   participante   2

也就是说,我希望 id_participante 列显示为 DISTINCT,而 participacionid_participacion 两列被分组。例如,Name1 出现了两次,我想将其结果分组在一列中。

我已经尝试了 GROUP_CONCAT() 但没有成功,有什么想法可以实现吗?

已解决 感谢第一个答案,我确实错过了 GROUP BY id_participante

所以工作查询是:

SELECT de.id as id_evento,de.evento, dp.id as id_participante,
    dp.nombre as participante,GROUP_CONCAT(pn.participacion SEPARATOR ', '),
    GROUP_CONCAT(pn.id SEPARATOR ', ') as id_participacion
            FROM difusion_evento de,difusion_evento_participante dep,difusion_participante dp,
                  difusion_participacion pn
            WHERE de.id=dep.difusion_evento_id
              AND dep.difusion_participante_id=dp.id
              AND dep.difusion_participacion_id=pn.id
              AND de.id=5
            GROUP BY id_participante
            ORDER BY 3,6

使用 GROUP BY id_participanteid_participante 分组。

您将在不同的行上有不同的参与者 ID,其他字段按参与者 ID 组合在一起。

SELECT de.id as id_evento,de.evento, dp.id as id_participante,
    dp.nombre as participante,pn.participacion,
    pn.id as id_participacion
            FROM difusion_evento de,difusion_evento_participante dep,difusion_participante dp,
                  difusion_participacion pn
            WHERE de.id=dep.difusion_evento_id
              AND dep.difusion_participante_id=dp.id
              AND dep.difusion_participacion_id=pn.id
              AND de.id=5
            GROUP BY id_participante
            ORDER BY 3,6