Volver a la página principal
martes 12 noviembre 2024
17

Cómo utilizar GROUP_CONCAT en MySQL

La función GROUP_CONCAT en MySQL es una función de agregación que permite concatenar valores de una columna en una sola cadena de texto, separando cada valor por una coma (u otro delimitador si se especifica). Es muy útil cuando necesitas combinar valores de una columna agrupados por otra, especialmente en consultas donde utilizas GROUP BY.

Sintaxis de GROUP_CONCAT

GROUP_CONCAT(expresion [ORDER BY campo] [SEPARATOR 'delimitador'])
  • expresion: Es el campo o columna cuyos valores deseas concatenar.
  • ORDER BY: (Opcional) Puedes ordenar los valores concatenados.
  • SEPARATOR: (Opcional) Define el delimitador entre cada valor concatenado. Por defecto, el delimitador es una coma (,), pero puedes especificar cualquier otro.

Ejemplos de uso

1. Concatenar valores en una columna agrupados por otra

Supongamos que tienes una tabla llamada alumnos con los siguientes datos:

curso_id nombre
1 Ana
1 Juan
2 Luis
2 Marta
2 Sofia

Para obtener una lista de nombres de alumnos agrupados por curso, puedes utilizar GROUP_CONCAT junto con GROUP BY:

SELECT curso_id, GROUP_CONCAT(nombre) AS alumnos
FROM alumnos
GROUP BY curso_id;

Resultado:

curso_id alumnos
1 Ana,Juan
2 Luis,Marta,Sofia

2. Usar ORDER BY dentro de GROUP_CONCAT

Si quieres que los nombres de cada grupo aparezcan en un orden específico, puedes agregar ORDER BY dentro de la función GROUP_CONCAT:

SELECT curso_id, GROUP_CONCAT(nombre ORDER BY nombre ASC) AS alumnos
FROM alumnos
GROUP BY curso_id;

Esto ordenará los nombres alfabéticamente dentro de cada grupo.

3. Cambiar el delimitador con SEPARATOR

Para usar un delimitador diferente (por ejemplo, un punto y coma ;), puedes usar la cláusula SEPARATOR:

SELECT curso_id, GROUP_CONCAT(nombre SEPARATOR '; ') AS alumnos
FROM alumnos
GROUP BY curso_id;

Resultado:

curso_id alumnos
1 Ana; Juan
2 Luis; Marta; Sofia

4. Limitar la longitud de GROUP_CONCAT

Por defecto, la longitud máxima de resultado de GROUP_CONCAT es limitada por la variable group_concat_max_len, que en muchos sistemas tiene un límite de 1024 caracteres. Para aumentar este límite, puedes configurarlo en tu sesión de MySQL de esta manera:

SET SESSION group_concat_max_len = 2048;

Conclusión

GROUP_CONCAT es una herramienta poderosa en MySQL para agrupar y concatenar valores de una columna en una sola cadena. Al combinarla con GROUP BY, ORDER BY y SEPARATOR, puedes personalizar los resultados según tus necesidades.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer