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