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