logo

MySQL | Group_CONCAT() funksjon

GROUP_CONCAT()-funksjonen i MySQL brukes til å sette sammen data fra flere rader til ett felt. Dette er en aggregert (GROUP BY) funksjon som returnerer en String verdi hvis gruppen inneholder minst én ikke- NULL verdi. Ellers kommer den tilbake NULL .

Syntaks:

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

Parametere:



  • col1, col2, ...colN: Dette er kolonnenavnene til tabellen.
  • col_name1: Kolonne i tabellen hvis verdier er koblet sammen i ett enkelt felt for hver gruppe.
  • tabellnavn: Navn på tabellen.
  • col_name2: Kolonne i tabellen etter hvilken gruppering er utført.

Bruk av ulike klausuler inne GROUP_CONCAT() funksjon

  • Distinkt: Det eliminerer gjentakelse av verdier fra resultatet.
  • Rekkefølge etter: Den sorterer verdiene til gruppen i en bestemt rekkefølge og kobler dem deretter sammen.
  • Separator: Som standard er verdiene til gruppen atskilt med ( , ) operatør. For å endre denne skilleverdien, brukes en Separator-klausul etterfulgt av en streng-literal. Det er gitt som Skilletegn «str_value» .

Eksempler:

La oss vurdere en ansatttabell:

emp_id fnavn lnavn dept_id styrke
1 mukesh gupta 2 Ledelse
3 neelam sharma 3 Hardtarbeidende
1 mukesh gupta 2 Ansvarlig
2 Devesh tyagi 2 Punktlighet
3 neelam sharma 3 Selvmotivert
1 mukesh gupta 2 Lærer raskt
4 keshav singel 3 Lytter
2 Devesh tyagi 2 Lærer raskt
5 spørre jain 1 Hardtarbeidende
4 keshav singel 3 Kritisk tenking
5 spørre jain 1 Målrettet

Spørsmål

1. Bruke enkel GROUP_CONCAT()-funksjon –

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

Produksjon

emp_id fnavn lnavn dept_id styrker
1 mukesh gupta 2 Lederskap, Ansvarlig, Lærer raskt
2 Devesh tyagi 2 Punktlighet, lærer raskt
3 neelam sharma 3 Hardtarbeidende, selvmotivert
4 keshav singel 3 Lytte, kritisk tenkning
5 spørre jain 1 Hardtarbeidende, målrettet

2. Bruke en DISTINCT-klausul –

Spørsmål

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

Produksjon

dept_id ansattes styrker
1 Målrettet, hardtarbeidende
2 Lederskap, punktlighet, lærevillig, ansvarlig
3 Kritisk tenkning, hardtarbeidende, lyttende, selvmotivert

3. Bruk av ORDER BY-klausulen –

Spørsmål

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

Her, Separator ', ' vil skille verdiene med komma ( , ) og et mellomrom.

Produksjon

dept_id ansatte-ID
1 5
2 1, 2
3 3. 4

Hvordan sette sammen flere rader med forskjellige kolonner i et enkelt felt?

Til nå har vi sett bruken av GROUP_CONCAT()-funksjonen for å gruppere verdiene til flere rader som tilhører samme kolonne. Men, bruker concat() function og group_concat() fungerer sammen, vi kan kombinere mer enn én kolonneverdier av forskjellige rader i ett felt.

Eksempel:
Med tanke på ansatt i tabellen ovenfor, hvis vi ønsker å finne ansattes styrke sammen med ansattes ID i andre spørring, skrives det som-

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

Forklaring:
Spørsmålet ovenfor består av to SELECT-utsagn en indre og den ytre.

Den indre SELECT-setningen-

Spørsmål

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

Den vil gruppere radene med ansatttabell i henhold til emp_id. Den første resulterte kolonnen viser dept_id, den andre kolonnen viser emp_id sammen med deres styrkeliste.

Produksjon for indre SELECT-setning-

dept_id styrker
2 1: Lederskap, Ansvarlig, Lærer raskt
2 2: Punktlighet, rask innlærer
3 3: Hardtarbeidende, selvmotivert
3 4: Lytte, kritisk tenkning
1 5: Hardtarbeidende, målrettet

Den ytre SELECT-setningen vil nå gruppere disse radene i henhold til dept_id.

Produksjon

dept_id emp-id: styrker
1 5: Hardtarbeidende, målrettet
2 1: Lederskap, Ansvarlig, Lærer raskt 2: Punktlighet, Lærer raskt
3 3: Hardtarbeidende, Selvmotivert 4:Lytte, Kritisk tenkning

Merk: Resultatet av GROUP_CONCAT()-funksjonen avkortes til maksimal lengde, dvs 1024 som er gitt av systemvariabel group_concat_max_len . Verdien til variabelen group_concat_max_len kan imidlertid endres under kjøring ved å bruke SETT kommando som-

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