PostgreSQL však na rozdiel od MySQL natívne nepodporuje funkciu group_concat(). Preto tento tutoriál skúma, ako môžeme dosiahnuť podobnú funkčnosť pomocou funkcie string_agg().
Funkcia PostgreSQL String_Agg
Funkcia string_agg v PostgreSQL nám umožňuje zreťaziť hodnoty z viacerých riadkov do jedného reťazca a je oddelená zadaným parametrom.
Použitie syntaxe funkcie je znázornené takto:
SELECT string_agg(názov_stĺpca, oddeľovač)
FROM table_name
KDE podmienky
GROUP BY zoskupenie_stĺpcov;
Nasledujúca syntax je vyjadrená takto:
názov_stĺpca – Určuje názov stĺpca, ktorého stĺpec chceme zreťaziť.
oddeľovač – Definuje oddeľovací znak, ktorý sa použije pri spájaní vstupných hodnôt.
názov_tabulky – Cieľová tabuľka, ktorá obsahuje údaje.
zoskupenie_stĺpcov – Špecifikuje stĺpce, ktoré sa používajú na zoskupenie špecifikovaných údajov.
Príklad funkcie PostgreSQL String_Agg
Uveďme si praktickejší príklad, aby sme ilustrovali, ako funkcia funguje. Predpokladajme, že máme tabuľku, ktorá obsahuje informácie o študentovi. Tabuľka obsahuje tri stĺpce: id, názov a predmet.
Ak chceme spojiť mená študentov, ktorí si zapísali rovnaký predmet, môžeme použiť funkciu string_agg.
SELECT predmet, reťazec_agg ( názov, ',' ) študenti ASOD študentov
GROUP BY predmet;
Po spustení daného dotazu by mal vrátiť sadu výsledkov s dvoma hlavnými stĺpcami: predmet a študenti. Študenti obsahujú zreťazené mená študentov pre každý predmet a sú oddelené čiarkou.
POZNÁMKA : Funkcia string_agg štandardne triedi zreťazené hodnoty. Do funkcie string_agg môžete pridať klauzulu ORDER BY, aby ste zachovali pôvodné poradie.
Tu to máte! Priama a efektívna metóda na dosiahnutie podobnej funkčnosti, ktorú poskytuje funkcia group_concat() v PostgreSQL.
Záver
V tomto krátkom, ale efektívnom návode sme sa naučili, ako používať funkciu string_agg v PostgreSQL na dosiahnutie podobnej funkcionality, ktorú poskytuje funkcia group_concat() v MySQL.