„MySQL Group Concat“ stygoms

Mysql Group Concat Strings



Funkcija GROUP _CONCAT yra kaupimo funkcija GROUP BY, leidžianti sujungti stulpelių reikšmes iš kelių eilučių į vieną lauką. Ji grąžina eilutę, jei rinkinio grupėje yra viena arba be nulinių stulpelių reikšmių, ir grąžina NULL reikšmę, jei jų nerasta.

Ši pamoka išmokys jus, kaip naudoti funkciją „MySQL GROUP_CONCAT ()“, norint sujungti grupės eilutes su keliomis parinktimis.







Pagrindinis naudojimas

Kaip jau minėjome, ši funkcija grąžina eilutės rezultatą su sujungtų nenulinių verčių reikšmėmis arba NULL, jei jų nėra.



Bendra sintaksė yra tokia:



GROUP_CONCAT ([ SKIRTIS ]išraiška[,išraiška ...]
[ RŪŠIUOTI PAGAL išraiška
[ ASC | DESC ] [,col_name ...]]
[SEPARATOR str_val])

Paaiškinimas

Iš aukščiau pateiktos sintaksės matote, kad funkcija GROUP_CONCAT naudoja „MySQL“ sąlygas ir apribojimus, kad nurodytų įvairias parinktis:





  1. SKIRTIS: Sąlyga DISTINCT padeda pašalinti pasikartojančias reikšmes grupėje prieš sujungimo procesą. Apsvarstykite mūsų vadovėlį, paaiškinantį „MySQL DISTINCT“, kad suprastumėte, kaip jis veikia.
  2. RŪŠIUOTI PAGAL: Kitas punktas yra ORDER BY, kuris padeda surūšiuoti reikšmes nurodyta tvarka. Tvarka gali būti didėjanti arba mažėjanti. Jei nenurodyta jokia tvarka, „MySQL“ formuoja reikšmes didėjančia tvarka.
  3. SKIRTUVAS : Ši sąlyga nustato eilutės literatūrą, įterptą tarp grupės verčių sujungimo proceso metu. Pagal numatytuosius nustatymus „MySQL“ verčių atskyrimui naudoja kablelį (,).

PASTABA: Funkcijos „MySQL GROUP_CONCAT ()“ sukurtas eilutės rezultatas yra apribotas iki ilgio, kurio vertė nustatyta kintamajame group_concat_max_len. Ši reikšmė yra apibrėžta sistemoje ir numatytoji reikšmė yra 1024. Šią vertę galite pakeisti visame pasaulyje arba nustatyti reikiamoje sesijoje.

SET [ GLOBAL | SESIJA ]group_concat_max_len= vertės ;

Norėdami sužinoti daugiau, apsvarstykite toliau pateiktą nuorodą:



https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len

Kaip tai veikia: pavyzdys

Leiskite naudoti paprastą pavyzdį, kaip paaiškinti, kaip veikia funkcija GROUP_CONCAT (). Apsvarstykite lentelę su CHAR lauku:

KURTI LENTELĖ sujungti ( vertės CHARAS );

Į lentelę įterpkime reikšmes, kaip parodyta toliau pateiktoje užklausoje:

ĮDĖTI Į sujungti ( vertės ) VERTYBĖS („H“),(„IR“),('THE'),('THE'),(„ARBA“);

Jei atliksime pagrindinę GROUP_CONCAT operaciją su lentelės reikšmėmis, gausime eilutės rezultatą, kaip parodyta žemiau:

PASIRINKTI GROUP_CONCAT ( SKIRTIS vertės RŪŠIUOTI PAGAL vertės ASC SKIRTUVAS'') NUO sujungti ;

Gauta vertė yra:

+ ------------------------------------------------- -------------- +
| GROUP_CONCAT ( SKIRTIS vertės RŪŠIUOTI PAGAL vertės ASC SKIRTUVAS'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1eilė į nustatyti (0.01sek)

Ar norite kito būdo suprasti, kas nutiko aukščiau pateiktam rezultatui?

Mes pradedame pašalindami visas pasikartojančias reikšmes dėl „MySQL DISTINCT“ sąlygos, kuri pašalina vieną L.

Toliau pereiname prie UŽSAKYTI didėjančia tvarka, kaip apibrėžta (ASC), o tai pakeičia eilutę

Sveiki->EHLO

Galiausiai, sujungimo procesą atliekame naudodami tarpą kaip nustatytų verčių skyriklį, todėl gauname eilutę E H L O iš {H, E, L, L O}.

Naudojimo atvejų pavyzdžiai

Paimkime tikrą duomenų bazę ir naudokime ją iliustruodami, kaip galime įgyvendinti funkciją GROUP_CONCAT (). Šiame pavyzdyje naudosime „Sakila“ duomenų bazę, o konkrečiai - „Sakila“ duomenų bazės adresų lentelę.

Norėdami atsisiųsti pavyzdžių duomenų bazę, apsvarstykite toliau pateiktą šaltinį:

https://dev.mysql.com/doc/index-other.html

„Sakila“ duomenų bazės adresų lentelėje gausite stulpelį „rajonas“. Visus unikalius rajonus galime atskirti vamzdžiu, kaip parodyta toliau pateiktoje užklausoje:

PASIRINKTI GROUP_CONCAT ( SKIRTIS rajonas RŪŠIUOTI PAGAL rajono SEPARATORIUS'|') NUO sakila.adresas RIBOTA 5;

Aukščiau pateiktoje užklausoje bus rodomi visi DISTINCT rajonai ir jie bus išdėstyti didėjančia tvarka, atskirti vamzdžiu.

PASTABA: Funkcija GROUP_CONCAT () yra kaupimo funkcija. Todėl reikia nurodyti ORDER BY sakinį funkcijos viduje, o ne SELECT sakinyje.

Išvada

Funkcija „MySQL GROUP_CONCAT ()“, aptarta šiame vadove, yra naudinga funkcija, leidžianti sukurti unikalius, surūšiuotus ir sutvarkytus duomenis iš lentelės, kurioje gali būti pasikartojančių ir neužsakytų duomenų.

Jei norite sužinoti daugiau, apsvarstykite dokumentus ar kitas „MySQL“ mokymo programas.