GROUP _CONCAT -funktio on GROUP BY -koostetoiminto, jonka avulla voit yhdistää useiden rivien sarakearvot yhteen kenttään. Se palauttaa merkkijonon, jos joukko sisältää yhden tai ei-nolla-sarakkeen arvon, ja palauttaa NULL-arvon, jos mitään ei löydy.
Tämä opetusohjelma opettaa sinulle, miten voit käyttää MySQL GROUP_CONCAT () -toimintoa ryhmän merkkijonojen yhdistämiseen useisiin vaihtoehtoihin.
Peruskäyttö
Kuten olemme maininneet, tämä funktio palauttaa merkkijonotuloksen yhdistettyjen ei-nolla-arvojen arvoilla tai NULL-arvon, jos niitä ei ole.
Yleinen syntaksi on:
GROUP_CONCAT ([ DISTINCT ]lauseke[,lausunto ...]
[ TILAA lauseke
[ ASC | DESC ] [,col_name ...]]
[SEPARATOR str_val])
Selitys
Yllä olevasta syntaksista näet, että GROUP_CONCAT -toiminto käyttää MySQL -lausekkeita ja rajoituksia eri vaihtoehtojen määrittämiseen:
- DISTINCT: DISTINCT -lause auttaa poistamaan päällekkäiset arvot ryhmässä ennen ketjutusprosessia. Harkitse opetusohjelmaamme, jossa selitetään MySQL DISTINCT, jotta ymmärrät, miten se toimii.
- TILAA: Seuraava lauseke on ORDER BY, joka auttaa lajittelemaan arvot määritetyssä järjestyksessä. Järjestys voi olla nouseva tai laskeva. Jos järjestystä ei ole määritetty, MySQL muotoilee arvot nousevaan järjestykseen.
- EROTIN : Tämä lauseke asettaa merkkijonon, joka lisätään ryhmän arvojen välille ketjutusprosessissa. Oletuksena MySQL käyttää arvoja pilkulla (,).
HUOMAUTUS: Funktion MySQL GROUP_CONCAT () tuottama merkkijonotulos on rajoitettu pituuteen, jonka arvo on asetettu muuttujaan group_concat_max_len. Tämä arvo on määritelty järjestelmässä ja sen oletusarvo on 1024. Voit muuttaa tätä arvoa maailmanlaajuisesti tai asettaa sen tarvitsemassasi istunnossa.
ASETA [ GLOBAL | ISTUNTO ]group_concat_max_len= arvo ;Harkitse alla olevaa viitettä saadaksesi lisätietoja:
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len
Kuinka se toimii: Esimerkki
Sallikaa minun käyttää yksinkertaista esimerkkiä selittääkseni, miten GROUP_CONCAT () -toiminto toimii. Tarkastellaan taulukkoa, jossa on CHAR -kenttä seuraavasti:
LUODA PÖYTÄ ketju ( arvo HIILTYÄ );Lisäämme taulukkoon arvot alla olevan kyselyn mukaisesti:
INSERT INTO ketju ( arvo ) ARVOT ('H'),('JA'),('THE'),('THE'),('TAI');Jos suoritamme GROUP_CONCAT -perustoiminnon taulukon arvoille, saamme merkkijonotuloksen alla esitetyllä tavalla:
VALITSE GROUP_CONCAT ( DISTINCT arvo TILAA arvo ASC EROTIN'') ALK ketju ;Tuloksena oleva arvo on:
+ ------------------------------------------------- -------------- +| GROUP_CONCAT ( DISTINCT arvo TILAA arvo ASC EROTIN'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1rivi sisään aseta (0,01sek)
Haluatko toisen tavan ymmärtää, mitä edellä annetulle tulokselle tapahtui?
Aloitamme poistamalla kaikki päällekkäiset arvot MySQL DISTINCT -lausekkeen vuoksi, joka poistaa yhden L.
Seuraavaksi siirrymme tilaukseen ASC (ASC) määritetyssä nousevassa järjestyksessä, joka muuttaa merkkijonon muodossa
HELO->EHLOLopuksi suoritamme ketjutusprosessin käyttämällä välilyöntiä asetettujen arvojen erottajana, jolloin tuloksena on merkkijono E H L O kohdista {H, E, L, L O}.
Esimerkkejä käyttötapauksista
Otetaan todellinen tietokanta ja käytetään sitä havainnollistamaan, kuinka voimme toteuttaa GROUP_CONCAT () -toiminnon. Tässä esimerkissä käytämme Sakila -tietokantaa ja erityisesti Sakila -tietokannan osoitetaulukkoa.
Harkitse alla olevaa resurssia ladataksesi tietokannan esimerkeillesi:
https://dev.mysql.com/doc/index-other.html
Sakila -tietokannan osoitetaulukosta saat piirin sarakkeen. Voimme saada kaikki ainutlaatuiset piirit erilleen putkella alla olevan kyselyn mukaisesti:
VALITSE GROUP_CONCAT ( DISTINCT kaupunginosa TILAA piirin SEPARATOR'|') ALK sakila.osoite RAJA 5;Yllä oleva kysely näyttää kaikki DISTINCT -piirit ja järjestää ne nousevassa järjestyksessä putkella erotettuna.
HUOMAUTUS: Funktio GROUP_CONCAT () on koottu funktio. Siksi ORDER BY -lauseke on määritettävä funktion sisällä eikä SELECT -käskyssä.
Johtopäätös
Tässä opetusohjelmassa käsitelty MySQL GROUP_CONCAT () -toiminto on hyödyllinen toiminto, jonka avulla voit luoda ainutlaatuisia, lajiteltuja ja järjestettyjä tietoja taulukosta, joka voi sisältää päällekkäisyyksiä ja järjestämättömiä tietoja.
Tutustu asiakirjoihin tai muihin MySQL -opetusohjelmiin saadaksesi lisätietoja.