logo

MySQL | Grupas_CONCAT() funkcija

Funkcija GROUP_CONCAT() pakalpojumā MySQL tiek izmantota, lai apvienotu datus no vairākām rindām vienā laukā. Šī ir apkopošanas (GROUP BY) funkcija, kas atgriež a Stīga vērtība, ja grupā ir vismaz viens NULL vērtību. Pretējā gadījumā tas atgriežas NULL .

Sintakse:

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

Parametri:



  • col1, col2, ...colN: Šie ir tabulas kolonnu nosaukumi.
  • col_name1: Tabulas kolonna, kuras vērtības ir apvienotas vienā laukā katrai grupai.
  • tabulas_nosaukums: Tabulas nosaukums.
  • col_name2: Tabulas kolonna, pēc kuras tiek veikta grupēšana.

Dažādu klauzulu izmantošana iekšpusē GROUP_CONCAT() funkciju

  • Atšķirīgs: Tas novērš vērtību atkārtošanos no rezultāta.
  • Sakārtot pēc: Tas sakārto grupas vērtības noteiktā secībā un pēc tam saliek tās.
  • Atdalītājs: Pēc noklusējuma grupas vērtības tiek atdalītas ar ( , ) operators. Lai mainītu šo atdalītāja vērtību, tiek izmantota klauzula Separator, kam seko virknes literāls. Tas tiek dots kā Atdalītājs str_value .

Piemēri:

cik nulle uz vienu miljonu

Apsveriet darbinieku tabulu:

java un šūpoles
emp_id fname vārds dept_id spēks
1 mukešs gupta 2 Vadība
3 neelam sharma 3 Smagi strādājošs
1 mukešs gupta 2 Atbildīgs
2 Devesh tyagi 2 Punktualitāte
3 neelam sharma 3 Pašmotivēts
1 mukešs gupta 2 Ātri apmācāms
4 keshav singāls 3 Klausīšanās
2 Devesh tyagi 2 Ātri apmācāms
5 jautāt jain 1 Smagi strādājošs
4 keshav singāls 3 Kritiskā domāšana
5 jautāt jain 1 Uz mērķi orientēts

Vaicājums

1. Izmantojot vienkāršu funkciju GROUP_CONCAT() -

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

Izvade

emp_id fname vārds dept_id stiprās puses
1 mukešs gupta 2 Vadītājs, atbildīgs, ātri apgūstošs
2 Devesh tyagi 2 Punktualitāte, ātri apgūstošs
3 neelam sharma 3 Strādīgs, pašmotivēts
4 keshav singāls 3 Klausīšanās, kritiskā domāšana
5 jautāt jain 1 Strādīgs, uz mērķi orientēts

2. Izmantojot DISTINCT klauzulu –

Vaicājums

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

Izvade

dept_id darbinieku stiprās puses
1 Mērķtiecīgs, strādīgs
2 Līderība, punktualitāte, ātri apgūstošs, atbildīgs
3 Kritiskā domāšana, strādīgs, klausošs, pašmotivēts

3. Klauzulas ORDER BY izmantošana –

Vaicājums

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

Šeit, Atdalītājs ', ' atdalīs vērtības ar komatu ( , ) un atstarpes rakstzīmi.

Izvade

dept_id darbinieku ID
1 5
2 1, 2
3 3. 4

Kā vienā laukā savienot vairākas dažādu kolonnu rindas?

Līdz šim mēs esam redzējuši funkcijas GROUP_CONCAT() izmantošanu, lai grupētu vairāku rindu vērtības, kas pieder vienai kolonnai. Bet, izmantojot concat () funkcija un grupa_concat() kopā, mēs varam apvienot vairāk nekā vienas kolonnas vērtības dažādās rindās vienā laukā.

nulles

Piemērs:
Ņemot vērā iepriekš minēto tabulu darbinieku, ja mēs vēlamies atrast darbinieku spēku kopā ar darbinieku ID otrajā vaicājumā, tas tiek rakstīts šādi:

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

Paskaidrojums:
Iepriekš minētais vaicājums sastāv no diviem SELECT paziņojumus iekšējo un ārējo.

Iekšējais SELECT paziņojums-

np kur

Vaicājums

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

Tas grupēs darbinieku tabulas rindas atbilstoši emp_id. Pirmajā iegūtajā kolonnā tiek parādīts dept_id, otrajā kolonnā tiek parādīts emp_id kopā ar to stipro pušu sarakstu.

Izvade iekšējam SELECT priekšrakstam-

dept_id stiprās puses
2 1: Līderība, atbildīgs, ātri apgūstošs
2 2: punktualitāte, ātri apgūstošs
3 3: strādīgs, pašmotivēts
3 4: klausīšanās, kritiskā domāšana
1 5: strādīgs, uz mērķi orientēts

Ārējais SELECT priekšraksts tagad grupēs šīs rindas atbilstoši dept_id.

Izvade

dept_id emp-id: stiprās puses
1 5: strādīgs, uz mērķi orientēts
2 1: vadība, atbildīgs, ātri apgūstošs 2: punktualitāte, ātri apgūstošs
3 3: strādīgs, pašmotivēts 4: klausīšanās, kritiska domāšana

Piezīme: Funkcijas GROUP_CONCAT() rezultāts tiek saīsināts līdz maksimālajam garumam, t.i 1024 ko dod sistēmas mainīgais group_concat_max_len . Tomēr mainīgā group_concat_max_len vērtību izpildes laikā var mainīt, izmantojot IESTATĪT komandēt kā-

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