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.>