logo

MySQL | Group_CONCAT()-funktio

MySQL:n GROUP_CONCAT()-funktiota käytetään useiden rivien tietojen ketjuttamiseen yhteen kenttään. Tämä on koontifunktio (GROUP BY), joka palauttaa a merkkijono arvo, jos ryhmässä on vähintään yksi ei- TYHJÄ arvo. Muuten se palaa TYHJÄ .

rikkoa java

Syntaksi:

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

Parametrit:



  • sarake1, sarake2, ...sarake: Nämä ovat taulukon sarakkeiden nimet.
  • sarakkeen_nimi1: Taulukon sarake, jonka arvot on ketjutettu yhteen kenttään jokaiselle ryhmälle.
  • taulukon_nimi: Taulukon nimi.
  • sarakkeen_nimi2: Taulukon sarake, jonka mukaan ryhmittely tehdään.

Erilaisten lausekkeiden käyttö sisällä GROUP_CONCAT() toiminto

  • Erillinen: Se eliminoi arvojen toiston tuloksesta.
  • Tilausperuste: Se lajittelee ryhmän arvot tiettyyn järjestykseen ja ketjuttaa ne sitten.
  • Erotin: Oletusarvoisesti ryhmän arvot erotetaan ( , ) -operaattori. Tämän erottimen arvon muuttamiseksi käytetään Separator-lausetta ja sen jälkeen merkkijonoliteraalia. Se annetaan muodossa Erotin str_value .

Esimerkkejä:

Tarkastellaanpa työntekijätaulukkoa:

voi abstraktilla luokalla olla rakentaja
emp_id fname nimi osastotunnus vahvuus
1 mukesh gupta 2 Johtajuus
3 neelam sharma 3 Ahkera
1 mukesh gupta 2 Vastuullinen
2 Devesh tyagi 2 Täsmällisyys
3 neelam sharma 3 Itsemotivoitunut
1 mukesh gupta 2 Nopea oppimaan
4 keshav singhal 3 Kuunteleminen
2 Devesh tyagi 2 Nopea oppimaan
5 kysyä jain 1 Ahkera
4 keshav singhal 3 Kriittinen ajattelu
5 kysyä jain 1 Päämäärätietoinen

Kysely

1. Käytä yksinkertaista GROUP_CONCAT()-funktiota –

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

Lähtö

emp_id fname nimi osastotunnus vahvuuksia
1 mukesh gupta 2 Johtajuus, vastuuntuntoinen, nopeasti oppiva
2 Devesh tyagi 2 Täsmällisyys, nopea oppija
3 neelam sharma 3 Ahkera, oma-aloitteinen
4 keshav singhal 3 Kuunteleminen, kriittinen ajattelu
5 kysyä jain 1 Ahkera, tavoitteellinen

2. DISTINCT-lauseen käyttö –

Kysely

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

Lähtö

osastotunnus työntekijöiden vahvuudet
1 Tavoitteellinen, ahkera
2 Johtajuus, täsmällisyys, nopea oppija, vastuullinen
3 Kriittinen ajattelu, ahkera, kuunteleva, oma-aloitteinen

3. ORDER BY -lausekkeen käyttö –

Kysely

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

Tässä, Erotin ', ' erottaa arvot pilkulla ( , ) ja välilyöntimerkki.

Lähtö

osastotunnus työntekijöiden tunnukset
1 5
2 1, 2
3 3. 4

Kuinka ketjuttaa useita eri sarakkeiden rivejä yhteen kenttään?

Tähän mennessä olemme nähneet GROUP_CONCAT()-funktion käytön useiden samaan sarakkeeseen kuuluvien rivien arvojen ryhmittelyyn. Mutta käyttämällä concat() funktio ja group_concat()-funktio yhdessä, voimme yhdistää useamman kuin yhden sarakkeen arvot eri riveistä yhteen kenttään.

Esimerkki:
Ottaen huomioon yllä olevan taulukon työntekijän, jos haluamme löytää työntekijöiden vahvuuden ja työntekijätunnuksen toisessa kyselyssä, se kirjoitetaan seuraavasti:

takaisinsoitto helvetti javascriptissä
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;>

Selitys:
Yllä oleva kysely koostuu kahdesta SELECT-lauseet sisäinen ja ulompi.

Sisäinen SELECT-lause

10/10

Kysely

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

Se ryhmittelee työntekijätaulukon rivit emp_id:n mukaan. Ensimmäisessä tuloksena olevassa sarakkeessa näkyy dept_id, toisessa sarakkeessa näkyy emp_id vahvuuksien luetteloineen.

Lähtö sisäiseen SELECT-lauseeseen-

osastotunnus vahvuuksia
2 1: johtajuus, vastuullinen, nopea oppija
2 2: Täsmällisyys, nopea oppija
3 3: Ahkera, oma-aloitteinen
3 4: Kuunteleminen, kriittinen ajattelu
1 5: Ahkera, tavoitteellinen

Ulompi SELECT-käsky ryhmittelee nyt nämä rivit dept_id:n mukaan.

Lähtö

osastotunnus emp-id: vahvuudet
1 5: Ahkera, tavoitteellinen
2 1: johtajuus, vastuullinen, nopea oppija 2: täsmällisyys, nopea oppija
3 3: Ahkera, oma-aloitteinen 4: Kuunteleva, kriittinen ajattelu

Huomautus: GROUP_CONCAT()-funktion tulos katkaistaan ​​maksimipituuteen eli 1024 jonka antaa järjestelmämuuttuja group_concat_max_len . Muuttujan group_concat_max_len arvoa voidaan kuitenkin muuttaa ajon aikana käyttämällä ASETA komenta niin-

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