logo

MySQL | Función Group_CONCAT()

La función GROUP_CONCAT() en MySQL se utiliza para concatenar datos de varias filas en un campo. Esta es una función agregada (GROUP BY) que devuelve un Cadena valor si el grupo contiene al menos un elemento no NULO valor. De lo contrario, regresa NULO .

Sintaxis:



SELECT col1, col2, ..., colN GROUP_CONCAT ( [DISTINCT] col_name1  [ORDER BY clause] [SEPARATOR str_val] )  FROM table_name GROUP BY col_name2;>

Parámetros:

  • col1, col2, ...colN: Estos son los nombres de las columnas de la tabla.
  • col_name1: Columna de la tabla cuyos valores se concatenan en un solo campo para cada grupo.
  • nombre de la tabla: Nombre de la mesa.
  • col_name2: Columna de la tabla según la cual se realiza la agrupación.

Uso de varias cláusulas en el interior. GRUPO_CONCAT() función

  • Distinto: Elimina la repetición de valores del resultado.
  • Ordenar por: Ordena los valores del grupo en un orden específico y luego los concatena.
  • Separador: Por defecto, los valores del grupo están separados por ( , ) operador. Para cambiar este valor de separador, se utiliza una cláusula Separator seguida de una cadena literal. Se da como Separador 'str_value' .

Ejemplos:

¿Cuál es el número del alfabeto?

Consideremos una tabla de Empleados:



ejemplo de poda alfa beta
emp_id nombref nombre id_departamento fortaleza
1 mukesh gupta 2 Liderazgo
3 neelam sharma 3 Trabajo duro
1 mukesh gupta 2 Responsable
2 devesh tiaga 2 Puntualidad
3 neelam sharma 3 Auto motivado
1 mukesh gupta 2 Aprende rápido
4 keshav singal 3 Escuchando
2 devesh tiaga 2 Aprende rápido
5 preguntar jainista 1 Trabajo duro
4 keshav singal 3 Pensamiento crítico
5 preguntar jainista 1 Orientado a objetivos

Consulta

1. Usando la función GROUP_CONCAT() simple –

SELECT emp_id, fname, lname, dept_id,  GROUP_CONCAT ( strength ) as 'strengths'  FROM employee  GROUP BY fname;>

Producción

emp_id nombref nombre id_departamento fortalezas
1 mukesh gupta 2 Liderazgo, Responsable, De Aprendizaje Rápido
2 devesh tiaga 2 Puntualidad, aprendizaje rápido.
3 neelam sharma 3 Trabajador, motivado
4 keshav singal 3 Escuchar, Pensamiento crítico
5 preguntar jainista 1 Trabajador, orientado a objetivos

2. Usando una cláusula DISTINCT –

Consulta

SELECT dept_id,  GROUP_CONCAT ( DISTINCT strength) as 'employees strengths'  FROM employee  GROUP BY dept_id;>

Producción

id_departamento fortalezas de los empleados
1 Orientado a objetivos, trabajador.
2 Liderazgo, Puntualidad, Aprendizaje rápido, Responsable
3 Pensamiento crítico, Trabajador, Escucha, Automotivado

3. Uso de la cláusula ORDER BY –



Consulta

SELECT dept_id,  GROUP_CONCAT ( DISTINCT emp_id ORDER BY emp_id SEPARATOR ', ') as 'employees ids'  FROM employee  GROUP BY dept_id;>

Aquí, Separador ',' separará los valores por una coma ( , ) y un carácter de espacio en blanco.

Producción

id_departamento identificaciones de empleados
1 5
2 1, 2
3 3, 4

¿Cómo concatenar varias filas de diferentes columnas en un solo campo?

Hasta ahora hemos visto el uso de la función GROUP_CONCAT() para agrupar los valores de varias filas que pertenecen a la misma columna. Pero, usando concat() function y group_concat() funcionan juntas, podemos combinar más de un valor de columna de diferentes filas en un solo campo.

ordenación por inserción en java

Ejemplo:
Teniendo en cuenta la tabla de empleados anterior, si deseamos encontrar la fortaleza de los empleados junto con la identificación de los empleados en la segunda consulta, entonces se escribe como:

SELECT dept_id, GROUP_CONCAT ( strengths SEPARATOR ' ') as 'emp-id : strengths' FROM (   SELECT dept_id, CONCAT ( emp_id, ':', GROUP_CONCAT(strength SEPARATOR', ') )   as 'strengths'   FROM employee   GROUP BY emp_id  ) as emp  GROUP BY dept_id;>

Explicación:
La consulta anterior consta de dos SELECCIONAR declaraciones uno interior y otro exterior.

La declaración SELECT interna

programación r en c

Consulta

SELECT dept_id, concat ( emp_id, ':', GROUP_CONCAT ( strength separator ', ' ) ) as 'strengths'  FROM employee  GROUP BY dept_id, emp_id>

Agrupará las filas de la tabla de empleados según emp_id. La primera columna resultante muestra dept_id, la segunda columna muestra emp_id junto con su lista de fortalezas.

Producción para la declaración SELECT interna-

id_departamento fortalezas
2 1: Liderazgo, responsable, de aprendizaje rápido
2 2: puntualidad, aprendizaje rápido
3 3: Trabajador y motivado
3 4: Escucha, Pensamiento crítico
1 5: Trabajador, orientado a objetivos

La declaración SELECT externa ahora agrupará estas filas según dept_id.

Producción

id_departamento emp-id: fortalezas
1 5: Trabajador, orientado a objetivos
2 1: Liderazgo, Responsable, Aprendizaje rápido 2: Puntualidad, Aprendizaje rápido
3 3: Trabajador, Automotivado 4: Escucha, Pensamiento crítico

Nota: El resultado de la función GROUP_CONCAT() se trunca a la longitud máxima, es decir 1024 que viene dado por la variable del sistema grupo_concat_max_len . Sin embargo, el valor de la variable group_concat_max_len se puede cambiar en tiempo de ejecución usando COLOCAR comando como-

SET [GLOBAL | SESSION] group_concat_max_len = value;   value:   It is the new value set to the variable.>