MySQL cuenta con muchas funciones las cuales pueden ser muy útiles aunque son poco conocidas. Una de ellas es la función GROUP_CONCAT la cual te regresa un string con la concatenación de los valores resultantes de un agrupamiento.

Por ejemplo, consideremos la siguiente tabla la cual contiene ciudades y el código del país al que pertenecen:

select * from ciudades

groupconcat_1.png

Podemos agrupar la tabla por el código de país:

select codigo_pais,count(*) as count_ciudades from ciudades group by codigo_pais

groupconcat_2.png

El cual nos indica la cantidad de valores que han sido agrupados utilizando la columna codigo_pais.

Con la función GROUP_CONCAT podemos conocer todos los países que fueron agrupados:

select codigo_pais,<strong>group_concat</strong>(ciudad) as ciudades from ciudad group by codigo_pais

groupconcat_3.png

La cual nos muestra los resultados concatenados y separados por una coma.