logo

MySQL | Group_CONCAT() Functie

De functie GROUP_CONCAT() in MySQL wordt gebruikt om gegevens uit meerdere rijen samen te voegen in één veld. Dit is een aggregatiefunctie (GROUP BY) die a retourneert Snaar waarde als de groep ten minste één niet- NUL waarde. Anders keert het terug NUL .

Syntaxis:



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

Parameters:

rdbms-normalisatie
  • col1, col2, ...colN: Dit zijn de kolomnamen van de tabel.
  • kolomnaam1: Kolom van de tabel waarvan de waarden voor elke groep in één veld zijn samengevoegd.
  • tafel naam: Naam van tafel.
  • kolomnaam2: Kolom van de tabel volgens welke groepering wordt uitgevoerd.

Gebruik van verschillende clausules binnenin GROUP_CONCAT() functie

  • Verschillend: Het elimineert de herhaling van waarden uit het resultaat.
  • Bestel per: Het sorteert de waarden van de groep in een specifieke volgorde en voegt ze vervolgens samen.
  • scheidingsteken: Standaard worden de waarden van de groep gescheiden door de ( , ) exploitant. Om deze scheidingswaarde te wijzigen, wordt een scheidingsclausule gebruikt, gevolgd door een letterlijke tekenreeks. Het wordt gegeven als Scheidingsteken ‘str_value’ .

Voorbeelden:

Laten we eens kijken naar een werknemerstabel:



emp_id fnaam Iknaam afdeling_id kracht
1 mukesh gupta 2 Leiderschap
3 Neelam sharma 3 Hardwerkend
1 mukesh gupta 2 Verantwoordelijk
2 Devesj tyagi 2 Stiptheid
3 Neelam sharma 3 Zelf gemotiveerd
1 mukesh gupta 2 Snelle leerling
4 keshav singaal 3 Luisteren
2 Devesj tyagi 2 Snelle leerling
5 vragen Jain 1 Hardwerkend
4 keshav singaal 3 Kritisch denken
5 vragen Jain 1 Doelgericht

Vraag

1. Met behulp van de eenvoudige GROUP_CONCAT() functie –

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

Uitvoer

emp_id fnaam Iknaam afdeling_id sterke punten
1 mukesh gupta 2 Leiderschap, verantwoordelijk, snelle leerling
2 Devesj tyagi 2 Stiptheid, snelle leerling
3 Neelam sharma 3 Hardwerkend, gemotiveerd
4 keshav singaal 3 Luisteren, kritisch denken
5 vragen Jain 1 Hardwerkend, doelgericht

2. Een DISTINCT-clausule gebruiken –

Java-tekenreeks is leeg

Vraag

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

Uitvoer

afdeling_id sterke punten van medewerkers
1 Doelgericht, Hardwerkend
2 Leiderschap, stiptheid, snelle leerling, verantwoordelijk
3 Kritisch denken, hard werken, luisteren, gemotiveerd

3. Gebruik van ORDER BY-clausule –



Vraag

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

Hier, Scheidingsteken ‘, ‘ scheidt de waarden door een komma ( , ) en een witruimteteken.

Uitvoer

afdeling_id medewerkers ID's
1 5
2 1, 2
3 3. 4

Hoe meerdere rijen van verschillende kolommen in één veld samenvoegen?

Tot nu toe hebben we het gebruik van de functie GROUP_CONCAT() gezien om de waarden van meerdere rijen die tot dezelfde kolom behoren te groeperen. Maar, gebruiken concat() function en group_concat() functioneren samen, kunnen we meer dan één kolomwaarden van verschillende rijen combineren in één veld.

Voorbeeld:
Als we de werknemer hierboven in ogenschouw nemen, als we de kracht van werknemers samen met de werknemers-ID in de tweede zoekopdracht willen vinden, dan wordt dit geschreven als:

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

Uitleg:
De bovenstaande vraag bestaat uit twee SELECT-instructies een binnenste en een buitenste.

De innerlijke SELECT-instructie-

Vraag

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

Het zal de rijen van de werknemerstabel groeperen op basis van emp_id. De eerste resulterende kolom toont dept_id, de tweede kolom toont emp_id samen met hun lijst met sterke punten.

sites zoals coomeet

Uitvoer voor innerlijke SELECT-instructie-

afdeling_id sterke punten
2 1: Leiderschap, verantwoordelijk, snelle leerling
2 2: Punctualiteit, snelle leerling
3 3: Hardwerkend, gemotiveerd
3 4: Luisteren, kritisch denken
1 5: Hardwerkend, doelgericht

De buitenste SELECT-instructie groepeert deze rijen nu op basis van dept_id.

Uitvoer

afdeling_id emp-id: sterke punten
1 5: Hardwerkend, doelgericht
2 1: Leiderschap, verantwoordelijk, snelle leerling 2: Stiptheid, snelle leerling
3 3: Hardwerkend, gemotiveerd. 4: Luisteren, kritisch denken

Opmerking: Het resultaat van de functie GROUP_CONCAT() wordt afgekapt tot de maximale lengte, d.w.z 1024 die wordt gegeven door de systeemvariabele group_concat_max_len . De waarde van de variabele group_concat_max_len kan echter tijdens runtime worden gewijzigd met behulp van SET commando als-

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