logo

MySQL | Group_CONCAT() Funktion

GROUP_CONCAT()-funktionen i MySQL används för att sammanfoga data från flera rader till ett fält. Detta är en aggregerad (GROUP BY) funktion som returnerar en Sträng värde om gruppen innehåller minst en icke- NULL värde. Annars kommer det tillbaka NULL .

Syntax:



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

Parametrar:

fibonacci-serien i java
  • kol1, kol2, ...kolN: Det här är kolumnnamnen i tabellen.
  • kol_namn1: Kolumn i tabellen vars värden är sammanlänkade i ett enda fält för varje grupp.
  • tabellnamn: Tabellens namn.
  • kol_namn2: Kolumn i tabellen enligt vilken gruppering görs.

Användning av olika klausuler inuti GROUP_CONCAT() fungera

  • Distinkt: Det eliminerar upprepning av värden från resultatet.
  • Sortera efter: Den sorterar gruppens värden i en specifik ordning och sammanfogar dem sedan.
  • Separator: Som standard separeras gruppens värden av ( , ) operatör. För att ändra detta separatorvärde används en Separator-sats följt av en bokstavlig sträng. Det ges som Separator 'str_value' .

Exempel:

Låt oss överväga en anställd tabell:



emp_id fname lnamn dept_id styrka
1 mukesh gupta 2 Ledarskap
3 neelam sharma 3 Hårt arbetande
1 mukesh gupta 2 Ansvarig
2 Devesh tyagi 2 Punktlighet
3 neelam sharma 3 Självmotiverad
1 mukesh gupta 2 Snabb lärd
4 keshav singel 3 Lyssnande
2 Devesh tyagi 2 Snabb lärd
5 fråga jain 1 Hårt arbetande
4 keshav singel 3 Kritiskt tänkande
5 fråga jain 1 Målinriktad

Fråga

1. Använder den enkla GROUP_CONCAT()-funktionen –

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

Produktion

emp_id fname lnamn avd_id styrkor
1 mukesh gupta 2 Ledarskap, Ansvarsfull, Snabblärare
2 Devesh tyagi 2 Punktlighet, snabblärande
3 neelam sharma 3 Hårt arbetande, självgående
4 keshav singel 3 Lyssna, kritiskt tänkande
5 fråga jain 1 Hårt arbetande, målinriktad

2. Använda en DISTINCT-sats –

upphöjd i illustrator

Fråga

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

Produktion

avd_id anställdas styrkor
1 Målinriktad, hårt arbetande
2 Ledarskap, Punktlighet, Snabblärare, Ansvarsfull
3 Kritiskt tänkande, hårt arbetande, lyssnande, självmotiverad

3. Användning av ORDER BY-klausul –



Fråga

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

Här, Separator ', ' kommer att separera värdena med ett kommatecken ( , ) och ett blanksteg.

Produktion

dept_id anställdas id
1 5
2 1, 2
3 3. 4

Hur sammanfogar man flera rader med olika kolumner i ett enda fält?

Hittills har vi sett användningen av GROUP_CONCAT()-funktionen för att gruppera värdena för flera rader som hör till samma kolumn. Men, använder concat() function och group_concat() fungerar tillsammans, vi kan kombinera mer än ett kolumnvärde av olika rader i ett enda fält.

Exempel:
Med tanke på den anställde i tabellen ovan, om vi vill hitta anställdas styrka tillsammans med anställdas ID i den andra frågan så skrivs det som-

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

Förklaring:
Ovanstående fråga består av två SELECT-satser en inre och den yttre.

Den inre SELECT-satsen-

Fråga

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

Det kommer att gruppera raderna i anställdtabellen enligt emp_id. Den första resulterande kolumnen visar dept_id, andra kolumnen visar emp_id tillsammans med deras styrkor.

industri och fabrik

Produktion för inre SELECT-sats-

dept_id styrkor
2 1: Ledarskap, Ansvarsfull, Snabblärare
2 2: Punktlighet, snabblärare
3 3: Hårt arbetande, självgående
3 4: Lyssna, Kritiskt tänkande
1 5: Hårt arbetande, målinriktad

Den yttre SELECT-satsen kommer nu att gruppera dessa rader enligt dept_id.

Produktion

dept_id emp-id: styrkor
1 5: Hårt arbetande, målinriktad
2 1: Ledarskap, Ansvarsfull, Snabblärare 2: Punktlighet, Snabblärare
3 3: Hårt arbetande, Självmotiverad 4: Lyssna, Kritiskt tänkande

Notera: Resultatet av GROUP_CONCAT()-funktionen trunkeras till den maximala längden, dvs 1024 som ges av systemvariabel group_concat_max_len . Däremot kan värdet på variabeln group_concat_max_len ändras under körning genom att använda UPPSÄTTNING kommando som-

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