Funkcija GROUP_CONCAT() v MySQL se uporablja za združevanje podatkov iz več vrstic v eno polje. To je agregatna (GROUP BY) funkcija, ki vrne a Vrvica vrednost, če skupina vsebuje vsaj eno ne- NIČ vrednost. V nasprotnem primeru se vrne NIČ .
Sintaksa:
SELECT col1, col2, ..., colN GROUP_CONCAT ( [DISTINCT] col_name1 [ORDER BY clause] [SEPARATOR str_val] ) FROM table_name GROUP BY col_name2;>
Parametri:
pomočnik policijskega komisarja
- col1, col2, ...coln: To so imena stolpcev tabele.
- ime_stolpca1: Stolpec tabele, katerega vrednosti so povezane v eno polje za vsako skupino.
- ime_tabele: Ime tabele.
- ime_stolpca2: Stolpec tabele, po katerem se izvaja združevanje.
Uporaba različnih klavzul znotraj GROUP_CONCAT() funkcijo
- Izrazit: Odpravlja ponavljanje vrednosti iz rezultata.
- Naroči po: Razvrsti vrednosti skupine v določenem vrstnem redu in jih nato združi.
- Ločilo: Privzeto so vrednosti skupine ločene z ( , ) operater. Če želite spremeniti to vrednost ločila, se uporabi stavek ločila, ki mu sledi literal niza. Podano je kot Ločilo 'str_value' .
Primeri:
Poglejmo si tabelo zaposlenih:
kako velik je zaslon mojega računalnika
| emp_id | fname | ime | dept_id | moč |
|---|---|---|---|---|
| 1 | mukesh | gupta | 2 | Vodenje |
| 3 | neelam | sharma | 3 | Delaven |
| 1 | mukesh | gupta | 2 | Odgovorno |
| 2 | Devesh | tyagi | 2 | Točnost |
| 3 | neelam | sharma | 3 | Samo-motiviran |
| 1 | mukesh | gupta | 2 | Hitri učenec |
| 4 | kešav | singhal | 3 | Poslušanje |
| 2 | Devesh | tyagi | 2 | Hitri učenec |
| 5 | vprašaj | jain | 1 | Delaven |
| 4 | kešav | singhal | 3 | Kritično razmišljanje |
| 5 | vprašaj | jain | 1 | Ciljno usmerjeno |
Poizvedba
1. Uporaba preproste funkcije GROUP_CONCAT() –
SELECT emp_id, fname, lname, dept_id, GROUP_CONCAT ( strength ) as 'strengths' FROM employee GROUP BY fname;>
Izhod
| emp_id | fname | ime | dept_id | prednosti |
|---|---|---|---|---|
| 1 | mukesh | gupta | 2 | Voditeljski, odgovoren, hitro se uči |
| 2 | Devesh | tyagi | 2 | Točnost, hitro učenje |
| 3 | neelam | sharma | 3 | Delaven, samomotiviran |
| 4 | kešav | singhal | 3 | Poslušanje, kritično mišljenje |
| 5 | vprašaj | jain | 1 | Delaven, ciljno usmerjen |
2. Uporaba klavzule DISTINCT –
Poizvedba
SELECT dept_id, GROUP_CONCAT ( DISTINCT strength) as 'employees strengths' FROM employee GROUP BY dept_id;>
Izhod
| dept_id | prednosti zaposlenih |
|---|---|
| 1 | Ciljno usmerjen, delaven |
| 2 | Vodenje, točnost, hitro učenje, odgovornost |
| 3 | Kritično razmišljanje, delaven, poslušen, samomotiviran |
3. Uporaba klavzule ORDER BY –
Poizvedba
SELECT dept_id, GROUP_CONCAT ( DISTINCT emp_id ORDER BY emp_id SEPARATOR ', ') as 'employees ids' FROM employee GROUP BY dept_id;>
tukaj, Ločilo ', ' bo vrednosti ločil z vejico ( , ) in presledek.
izdelava lupinskega skripta izvršljivega
Izhod
| dept_id | ID zaposlenih |
|---|---|
| 1 | 5 |
| 2 | 1, 2 |
| 3 | 3. 4 |
Kako združiti več vrstic različnih stolpcev v eno polje?
Do sedaj smo videli uporabo funkcije GROUP_CONCAT() za združevanje vrednosti več vrstic, ki pripadajo istemu stolpcu. Toda z uporabo concat() Funkcija in group_concat() delujeta skupaj, lahko združimo več vrednosti stolpcev različnih vrstic v eno polje.
primer:
Če upoštevamo zgornjo tabelo zaposleni, če želimo najti moč zaposlenih skupaj z ID-jem zaposlenih v drugi poizvedbi, potem je to zapisano kot-
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;>
Pojasnilo:
Zgornja poizvedba je sestavljena iz dveh Izjave SELECT notranja in zunanja.
Notranji stavek SELECT-
skener java
Poizvedba
SELECT dept_id, concat ( emp_id, ':', GROUP_CONCAT ( strength separator ', ' ) ) as 'strengths' FROM employee GROUP BY dept_id, emp_id>
Združil bo vrstice tabele zaposlenih glede na emp_id. Prvi nastali stolpec prikazuje dept_id, drugi stolpec prikazuje emp_id skupaj s seznamom njihovih prednosti.
Izhod za notranji stavek SELECT-
| dept_id | prednosti |
|---|---|
| 2 | 1: Vodenje, Odgovornost, Hitro učenje |
| 2 | 2: Točnost, hitro učenje |
| 3 | 3: Delaven, samomotiviran |
| 3 | 4: Poslušanje, kritično mišljenje |
| 1 | 5: Delaven, ciljno usmerjen |
Zunanji stavek SELECT bo zdaj združil te vrstice glede na dept_id.
Izhod
| dept_id | emp-id: prednosti |
|---|---|
| 1 | 5: Delaven, ciljno usmerjen |
| 2 | 1: Vodenje, Odgovornost, Hitro učenje 2: Točnost, Hitro učenje |
| 3 | 3: Delaven, Samomotiviran 4: Poslušanje, Kritično mišljenje |
Opomba: Rezultat funkcije GROUP_CONCAT() je prirezan na največjo dolžino, tj 1024 ki je podana s sistemsko spremenljivko group_concat_max_len . Vendar pa lahko vrednost spremenljivke group_concat_max_len spremenite med izvajanjem z uporabo NASTAVI ukaz kot-
SET [GLOBAL | SESSION] group_concat_max_len = value; value: It is the new value set to the variable.>