logo

MySQL | Funkcija Group_CONCAT().

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