MySQL Group Concat stīgām

Mysql Group Concat Strings



Funkcija GROUP _CONCAT ir apkopošanas funkcija GROUP BY, kas ļauj apvienot kolonnu vērtības no vairākām rindām vienā laukā. Tas atgriež virkni, ja kopu grupā ir viena vai bez nulles kolonnas vērtība, un atgriež vērtību NULL, ja nevienu nevar atrast.

Šī apmācība iemācīs jums izmantot funkciju MySQL GROUP_CONCAT (), lai apvienotu virknes no grupas ar vairākām iespējām.







Pamata lietošana

Kā jau minējām, šī funkcija atgriež virknes rezultātu ar salikto nenulles vērtību vērtībām vai NULL, ja tādas nav.



Vispārējā sintakse ir šāda:



GROUP_CONCAT ([ ATŠĶIRT ]izteiksme[,izteiciens ...]
[ SAKĀRTOT PĒC izteiksme
[ ASC | DESC ] [,col_name ...]]
[SEPARATOR str_val])

Skaidrojums

No iepriekš minētās sintakses varat redzēt, ka funkcija GROUP_CONCAT izmanto MySQL klauzulas un ierobežojumus, lai norādītu dažādas iespējas:





  1. ATKRITUMS: Klauzula DISTINCT palīdz noņemt kopiju kopas pirms apvienošanas procesa. Apsveriet mūsu apmācību, kas izskaidro MySQL DISTINCT, lai saprastu, kā tā darbojas.
  2. SAKĀRTOT PĒC: Nākamā klauzula ir ORDER BY, kas palīdz kārtot vērtības noteiktā secībā. Pasūtījums var būt augošs vai dilstošs. Ja pasūtījums nav norādīts, MySQL formatē vērtības augošā secībā.
  3. SEPARATORS : Šī klauzula nosaka virkņu burtu, kas savienošanas procesā tiek ievietots starp grupas vērtībām. Pēc noklusējuma MySQL vērtību atdalīšanai izmanto komatu (,).

PIEZĪME: Funkcijas MySQL GROUP_CONCAT () ģenerētais virknes rezultāts ir ierobežots ar vērtību, kas iestatīta mainīgā group_concat_max_len. Šī vērtība ir definēta sistēmā, un tās noklusējuma vērtība ir 1024. Šo vērtību varat mainīt globāli vai iestatīt vajadzīgajā sesijā.

SET [ GLOBĀLI | SESIJA ]group_concat_max_len= vērtību ;

Apsveriet tālāk sniegto atsauci, lai uzzinātu vairāk:



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

Kā tas darbojas: piemērs

Ļaujiet man izmantot vienkāršu piemēru, lai izskaidrotu, kā darbojas funkcija GROUP_CONCAT (). Aplūkojiet tabulu ar CHAR lauku šādi:

RADĪT TABULA savilcējs ( vērtību CHAR );

Ļaujiet tabulā ievietot vērtības, kā parādīts zemāk esošajā vaicājumā:

IEVIETOT INTO savilcējs ( vērtību ) VĒRTĪBAS ('H'),('UN'),('THE'),('THE'),(“VAI”);

Ja tabulas vērtībām veicam pamata GROUP_CONCAT darbību, mēs iegūsim virknes rezultātu, kā parādīts zemāk:

SELECT GROUP_CONCAT ( ATŠĶIRT vērtību SAKĀRTOT PĒC vērtību ASC SEPARATORS'') NO savilcējs ;

Rezultātā iegūtā vērtība ir šāda:

+ ------------------------------------------------- -------------- +
| GROUP_CONCAT ( ATŠĶIRT vērtību SAKĀRTOT PĒC vērtību ASC SEPARATORS'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1rinda iekšā komplekts (0.01sek)

Vai vēlaties citu veidu, kā saprast, kas notika ar iepriekš minēto rezultātu?

Mēs sākam, noņemot visas dublikātu vērtības, pateicoties MySQL DISTINCT klauzulai, kas noņem vienu L.

Tālāk mēs pārejam pie PASŪTĪT augošā secībā, kā definēts (ASC), kas maina virkni kā

SVEIKI->EHLO

Visbeidzot, mēs veicam saplūšanas procesu, izmantojot atstarpi kā iestatīto vērtību atdalītāju, kā rezultātā tiek iegūta virkne E H L O no {H, E, L, L O}.

Lietošanas gadījumu piemēri

Ņemsim reālu datu bāzi un izmantosim to, lai ilustrētu, kā mēs varam ieviest funkciju GROUP_CONCAT (). Šajā piemērā mēs izmantosim Sakila datu bāzi un konkrēti sakila datu bāzes adrešu tabulu.

Apsveriet tālāk pieejamo resursu, lai lejupielādētu savu piemēru datu bāzi:

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

Sakila datu bāzes adrešu tabulā jūs iegūsit kolonnu apgabals. Mēs varam iegūt visus unikālos rajonus, kas atdalīti ar cauruli, kā parādīts zemāk esošajā vaicājumā:

SELECT GROUP_CONCAT ( ATŠĶIRT apgabals SAKĀRTOT PĒC rajona SEPARATOR'|') NO sakila.adrese LIMIT 5;

Iepriekš minētais vaicājums parādīs visus DISTINCT rajonus un sakārtos tos augošā secībā, atdalot ar cauruli.

PIEZĪME: Funkcija GROUP_CONCAT () ir apkopota funkcija. Tāpēc ir jānorāda ORDER BY priekšraksts funkcijā, nevis SELECT.

Secinājums

Šajā apmācībā aplūkotā funkcija MySQL GROUP_CONCAT () ir noderīga funkcija, kas ļauj izveidot unikālus, sakārtotus un sakārtotus datus no tabulas, kurā var būt dublikāti un nesakārtoti dati.

Lai uzzinātu vairāk, apsveriet dokumentus vai mūsu citas MySQL apmācības.