logo

MySQL | Funció Group_CONCAT().

La funció GROUP_CONCAT() a MySQL s'utilitza per concatenar dades de diverses files en un sol camp. Aquesta és una funció agregada (GROUP BY) que retorna a Corda valor si el grup conté almenys un NUL valor. En cas contrari, torna NUL .

control del programa emmagatzemat

Sintaxi:



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

Paràmetres:

  • col1, col2, ...colN: Aquests són els noms de columnes de la taula.
  • nom_col1: Columna de la taula els valors de la qual estan concatenats en un sol camp per a cada grup.
  • nom_taula: Nom de la taula.
  • nom_col2: Columna de la taula segons quina agrupació es fa.

Ús de diverses clàusules a l'interior GROUP_CONCAT() funció

  • Distintiu: Elimina la repetició de valors del resultat.
  • Demanat per: Ordena els valors del grup en un ordre específic i després els concatena.
  • Separador: Per defecte, els valors del grup estan separats per la ( , ) operador. Per canviar aquest valor de separador, s'utilitza una clàusula Separator seguida d'un literal de cadena. Es dóna com Separador 'str_value' .

Exemples:

Considerem una taula d'empleats:



convertir la cadena en nombre enter
emp_id fname el nom dept_id força
1 mukesh gupta 2 Lideratge
3 neelam sharma 3 Treball dur
1 mukesh gupta 2 Responsable
2 Devesh tyagi 2 Puntualitat
3 neelam sharma 3 Automotivat
1 mukesh gupta 2 Aprèn ràpid
4 keshav singhal 3 Escoltant
2 Devesh tyagi 2 Aprèn ràpid
5 preguntar jain 1 Treball dur
4 keshav singhal 3 Pensament crític
5 preguntar jain 1 Orientat a objectius

Consulta

1. Utilitzant la funció simple GROUP_CONCAT() –

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

Sortida

emp_id fname el nom dept_id punts forts
1 mukesh gupta 2 Lideratge, responsable, aprenent ràpid
2 Devesh tyagi 2 Puntualitat, aprenentatge ràpid
3 neelam sharma 3 Treballador, automotivat
4 keshav singhal 3 Escolta, pensament crític
5 preguntar jain 1 Treballador, orientat a objectius

2. Utilitzar una clàusula DISTINCT –

Consulta

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

Sortida

dept_id punts forts dels empleats
1 Orientat a objectius, treballador
2 Lideratge, puntualitat, aprenentatge ràpid, responsable
3 Pensament crític, treballador, escoltant, automotivat

3. Ús 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à els valors amb una coma ( , ) i un caràcter d'espai en blanc.

Sortida

dept_id identificacions dels empleats
1 5
2 1, 2
3 3, 4

Com concatenar diverses files de columnes diferents en un sol camp?

Fins ara hem vist l'ús de la funció GROUP_CONCAT() per agrupar els valors de diverses files que pertanyen a la mateixa columna. Però, utilitzant concat() function i group_concat() junts, podem combinar més d'una columna valors de diferents files en un sol camp.

Exemple:
Tenint en compte l'empleat de la taula anterior, si volem trobar la força dels empleats juntament amb l'identificador dels empleats a la segona consulta, s'escriu com-

eina de curació gimp
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ó:
La consulta anterior consta de dos Instruccions SELECT un d'interior i un d'exterior.

La declaració SELECT interna-

natasha dalal

Consulta

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

Agruparà les files de la taula dels empleats segons emp_id. La primera columna resultant mostra dept_id, la segona columna mostra emp_id juntament amb la seva llista de punts forts.

Sortida per a la declaració SELECT interna-

dept_id punts forts
2 1: Lideratge, responsable, aprenent ràpid
2 2: Puntualitat, aprenent ràpid
3 3: Treballador, automotivat
3 4: Escolta, pensament crític
1 5: Treballador, orientat a objectius

La instrucció SELECT externa ara agruparà aquestes files segons dept_id.

Sortida

dept_id emp-id: punts forts
1 5: Treballador, orientat a objectius
2 1: Lideratge, responsable, aprenent ràpid 2: puntualitat, aprenent ràpid
3 3: Treballador, Automotivat 4: Escoltar, Pensament crític

Nota: El resultat de la funció GROUP_CONCAT() es trunca a la longitud màxima, és a dir 1024 que ve donada per la variable del sistema group_concat_max_len . Tanmateix, el valor de la variable group_concat_max_len es pot canviar en temps d'execució mitjançant CONJUNT comanda com-

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