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