Ir al contenido principal
Documentos
FuncionesExpresionesKeywordsDeclaracionesCláusulas

Función MySQL GROUP_CONCAT()

La función `GROUP_CONCAT()` de MySQL concatena valores de varias filas en una sola cadena, agrupados por una columna especificada. Esta función es especialmente útil para crear listas separadas por comas a partir de resultados agrupados.

Utilización

`GROUP_CONCAT()` se utiliza cuando necesitas agregar datos de cadenas de varias filas en una sola fila. Se suele utilizar junto con la cláusula `GROUP BY` para proporcionar resultados agrupados significativos. Si se omite `GROUP BY`, `GROUP_CONCAT()` concatenará todas las filas en una sola cadena en todo el conjunto de datos.

sql
GROUP_CONCAT([DISTINCT] expression [ORDER BY expression ASC|DESC] [SEPARATOR 'separator'])

En esta sintaxis, `expresión` representa la columna o valor a concatenar, y `SEPARADOR` define el delimitador entre los valores concatenados. El separador por defecto es una coma.

Ejemplos

1. Concatenación básica

sql
SELECT GROUP_CONCAT(first_name) 
FROM employees;

Este ejemplo concatena todos los valores de `nombre_del_nombre` de la tabla `empleados` en una sola cadena, separada por comas.

2. Concatenación agrupada

sql
SELECT department, GROUP_CONCAT(last_name) 
FROM employees
GROUP BY department;

Aquí, la función `GROUP_CONCAT()` concatena los valores de `apellido` de cada `departamento`, generando una lista separada por comas de apellidos por departamento.

3. Separador ordenado y personalizado

sql
SELECT department, GROUP_CONCAT(last_name ORDER BY last_name ASC SEPARATOR '; ')
FROM employees
GROUP BY department;

Este ejemplo no sólo agrupa los apellidos por departamento, sino que también los ordena alfabéticamente dentro de cada grupo y utiliza un punto y coma y un espacio como separador.

Consejos y buenas prácticas

  • Limita la longitud de la salida. Utiliza `SET SESSION group_concat_max_len = valor;` para ajustar la longitud máxima de la cadena de resultados y evitar que se trunque.
  • Utiliza DISTINTO con prudencia. Aplica `DISTINCT` dentro de `GROUP_CONCAT()` si necesitas eliminar valores duplicados en los resultados concatenados.
  • Selecciona los separadores adecuados. Elige un separador que no entre en conflicto con el contenido de los datos para garantizar la claridad y la coherencia.
  • Combínalo con ORDENAR POR. Utiliza `ORDER BY` dentro de `GROUP_CONCAT()` para controlar el orden de los valores concatenados, mejorando la legibilidad.
  • Garantiza una agrupación adecuada. Utiliza siempre `GROUP BY` con `GROUP_CONCAT()` para agregar correctamente los valores por la categoría deseada.
  • Ten en cuenta el rendimiento. Ten en cuenta las posibles implicaciones de rendimiento cuando utilices `GROUP_CONCAT()` en conjuntos de datos grandes, ya que puede aumentar el tiempo de procesamiento y el uso de recursos.

Perfeccionamiento de SQL para principiantes

Adquiere los conocimientos de SQL para interactuar con tus datos y consultarlos.
Empieza a aprender gratis