A GROUP _CONCAT függvény egy GROUP BY összesítő függvény, amely lehetővé teszi több oszlop oszlopértékeinek egyetlen mezőbe történő összekapcsolását. Visszaad egy karakterláncot, ha a halmazcsoport egy vagy nulla oszlopértéket tartalmaz, és NULL értéket ad vissza, ha nem található.
Ez az oktatóanyag megtanítja, hogyan használhatja a MySQL GROUP_CONCAT () függvényt, hogy több csoportból kombinálja a karakterláncokat.
Alapvető használat
Amint már említettük, ez a függvény egy karakterlánc eredményt ad vissza az összefűzött nem null értékekkel, vagy NULL értékkel, ha nincs ilyen.
Az általános szintaxis a következő:
GROUP_CONCAT ([ KÜLÖNBÖZŐ ]kifejezés[,kifejezés ...]
[ RENDEZÉS kifejezés
[ ASC | DESC ] [,oszlopnév ...]]
[SEPARATOR str_val])
Magyarázat
A fenti szintaxisból látható, hogy a GROUP_CONCAT függvény MySQL záradékokat és megszorításokat használ a különböző lehetőségek megadásához:
- KÜLÖNBÖZŐ: A DISTINCT záradék segít eltávolítani az ismétlődő értékeket a halmazcsoportból az összefűzési folyamat előtt. Tekintse meg bemutatónkat, amely elmagyarázza a MySQL DISTINCT -t, hogy megértsük, hogyan működik.
- RENDEZÉS: A következő záradék a ORDER BY, amely segít az értékek meghatározott sorrendben való rendezésében. A sorrend lehet növekvő vagy csökkenő. Ha nincs megadva sorrend, a MySQL növekvő sorrendben formázza az értékeket.
- SZÉTVÁLASZTÓ : Ez a záradék beállítja a karakterlánc -literált a csoport értékei közé illesztve az összefűzési folyamat során. Alapértelmezés szerint a MySQL vesszővel (,) választja el az értékeket.
JEGYZET: A MySQL GROUP_CONCAT () függvény által generált karakterlánc eredménye a group_concat_max_len változóban megadott értékre korlátozódik. Ezt az értéket a rendszer határozza meg, és alapértelmezett értéke 1024. Ezt az értéket globálisan módosíthatja, vagy beállíthatja a szükséges munkamenetben.
KÉSZLET [ GLOBÁLIS | ÜLÉS ]group_concat_max_len= érték ;További információért vegye figyelembe az alábbi hivatkozást:
https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_group_concat_max_len
Hogyan működik: példa
Engedje meg, hogy egy egyszerű példával magyarázzam el a GROUP_CONCAT () függvény működését. Tekintsük a táblázatot CHAR mezővel:
TEREMT ASZTAL összefűzött ( érték CHAR );Szúrjunk be értékeket a táblázatba az alábbi lekérdezés szerint:
INSERT BA összefűzött ( érték ) ÉRTÉKEK ('H'),('ÉS'),('AZ'),('AZ'),('VAGY');Ha alapvető GROUP_CONCAT műveletet hajtunk végre a táblázat értékeivel, akkor az alább látható karakterlánc eredményt kapjuk:
SELECT GROUP_CONCAT ( KÜLÖNBÖZŐ érték RENDEZÉS érték ASC SZÉTVÁLASZTÓ'') TÓL TŐL összefűzött ;A kapott érték:
+ ------------------------------------------------- -------------- +| GROUP_CONCAT ( KÜLÖNBÖZŐ érték RENDEZÉS érték ASC SZÉTVÁLASZTÓ'') |
+ ------------------------------------------------- -------------- +
|E H L O|
+ ------------------------------------------------- -------------- +
1sor ban ben készlet (0,01mp)
Szeretne más módon megérteni, mi történt a fent megadott eredménnyel?
Kezdjük azzal, hogy eltávolítjuk az összes ismétlődő értéket az egyik L -et eltávolító MySQL DISTINCT záradék miatt.
Ezután folytatjuk a ORDER BY (ASC) szerinti növekvő sorrendet, amely megváltoztatja a karakterláncot
HELLÓ->EHLOVégül elvégezzük az összefűzési folyamatot, egy szóközt használva a beállított értékek elválasztójaként, amelynek eredményeként az E H L O karakterláncot kapjuk a {H, E, L, L O} -ból.
Példa használati esetekre
Vegyünk egy valós adatbázist, és annak segítségével szemléltessük, hogyan tudjuk megvalósítani a GROUP_CONCAT () függvényt. Ebben a példában a Sakila adatbázist fogjuk használni, és különösen a Sakila adatbázis címtábláját.
Tekintse meg az alábbi forrást a példák adatbázisának letöltéséhez:
https://dev.mysql.com/doc/index-other.html
A Sakila adatbázis címtáblázatában megjelenik a kerület oszlop. Az összes egyedi kerületet csővel választhatjuk el az alábbi lekérdezés szerint:
SELECT GROUP_CONCAT ( KÜLÖNBÖZŐ kerület RENDEZÉS kerületi ELVÁLASZTÓ'|') TÓL TŐL sakila.cím HATÁR 5;A fenti lekérdezés az összes DISTINCT körzetet megjeleníti, és csővel elválasztva növekvő sorrendbe rendezi őket.
JEGYZET: A GROUP_CONCAT () függvény összesített függvény. Ezért az ORDER BY utasítást a függvényen belül kell megadni, nem pedig a SELECT utasításban.
Következtetés
Az ebben az oktatóanyagban tárgyalt MySQL GROUP_CONCAT () függvény hasznos funkció, amely lehetővé teszi egyedi, rendezett és rendszerezett adatok létrehozását egy olyan táblázatból, amely másolatokat és rendezetlen adatokat tartalmazhat.
Tekintse meg a dokumentumokat vagy a többi MySQL oktatóanyagunkat, ha többet szeretne megtudni.