©SQL :: Manager
HomeProgramm-InformationenTechnische DetailsKostenloser DownloadKaffee für den Autor
Netzwelt
SQL-FunktionMySQLMariaDB

Die GROUP_CONCAT SQL-Funktion in MySQL und MariaDB - Verketten von Zeichenketten

GROUP_CONCATSyntax:GROUP_CONCAT([DISTINCT] Ausdruck [, Ausdruck ...] [ORDER BY ... [ASC | DESC]] [SEPARATOR ...] [LIMIT ...])
Rückgabe-Wert:CHAR
Funktions-Typ:Aggregat-Funktion
Funktions-Beschreibung

Die SQL-Funktion GROUP_CONCAT() gibt ein Zeichenfolgenergebnis mit den verketteten Zeichenketten aus einer Gruppe zurück.

Als Argumente können mehrere Ausdrücke durch Komma getrennt angegeben werden.

NULL-Werte werden ignoriert. SET- und ENUM-Felder werden anhand ihrer Zeichenfolgenwerte verkettet.

Die Verwendung von einer DISTINCT-Klausel führt zur Verkettung von nur unterschiedlichen Zeichenketten.

Durch Verwendung der ORDER BY-Klausel können die Werte vor Verkettung sortiert werden.

Durch die SEPARATOR-Option kann ein Separator zur Verkettung der Werte gewählt werden.

Mit der LIMIT-Klausel kann die Ergebnismenge eingeschrängt werden.

Ohwohl die Funktion eine Aggregatfunktion ist, kann sie nicht in einer GROUP BY-Klausel verwendet werden.

GROUP_CONCAT() kann nicht als Fensterfunktion verwendet werden.

Die Funktion GROUP_CONCAT() gibt NULL zurück, wenn kein Ergebnis gefunden wurde.


Zu beachten ist, dass die Länge der verketteten Zeichenfolgen begrenzt ist. Die Standardbeschränkung liegt in MySQL bei 1024 und in MariaDB bei 1048576 Zeichen, die in der Systemvariablen group_concat_max_len geändert werden kann.

SQL Beispiele für die GROUP_CONCAT-Funktion

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41


DROP TABLE IF EXISTS `test_table`;
    
CREATE TABLE `test_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `type` enum('First','Second','Third','Last'DEFAULT NULL,
  `set` set('First','Second','Third','Last'DEFAULT NULL,
  `num1` int(11) NOT NULL DEFAULT 0,
  `num2` int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;

INSERT INTO `test_table` (`id`,`name`,`type`,`set`,`num1`,`num2`VALUES 
(1,'Art 1','First','Last',1,7),
(2,'Art 2','Second','First,Last',3,7),
(3,'Art 3','Second','Second,Last',5,7),
(4,'Art 4','Third','First,Second,Last',5,7),
(5,'Art 5','Last','First,Last',7,15),
(6,'Art 6','First','First,Last',7,15),
(7,'Art 7','Third','First,Third,Last',9,15),
(8,'Art 8','Last','Second,Third,Last',9,15);

select * from `test_table`;

select group_concat(name), group_concat(`type`), group_concat(distinct `type`)  from test_table;

select group_concat(name order by `type` asc separator ' - ')  from test_table;

select group_concat(name order by name desc separator ' - ')  from test_table;

select group_concat(name order by name desc separator ' - ' limit 3, 3)  from test_table;

select group_concat(name order by name desc separator ' - ' limit 3 offset 3)  from test_table;

select group_concat(name, '.'`type` order by `type` desc, name asc separator ' - ' limit 2, 6)  from test_table;

SELECT group_concat(null);

id
name
type
set
num1
num2
int(11)varchar(20) LATIN1enum LATIN1set LATIN1int(11)int(11)
1Art 1FirstLast17
2Art 2SecondFirst,Last37
3Art 3SecondSecond,Last57
4Art 4ThirdFirst,Second,Last57
5Art 5LastFirst,Last715
6Art 6FirstFirst,Last715
7Art 7ThirdFirst,Third,Last915
8Art 8LastSecond,Third,Last915
group_concat(name)
group_concat(`type`)
group_concat(distinct `type`)
text / blob(1048576) BINARYtext / blob(1048576) BINARYtext / blob(1048576) BINARY
Art 1,Art 2,Art 3,Art 4,Art 5,Art 6,Art 7,Art 8First,Second,Second,Third,Last,First,Third,LastFirst,Second,Third,Last
group_concat(name order by `type` asc separator ' - ')
text / blob(1048576) BINARY
Art 6 - Art 1 - Art 3 - Art 2 - Art 7 - Art 4 -...
group_concat(name order by name desc separator ' - ')
text / blob(1048576) BINARY
Art 8 - Art 7 - Art 6 - Art 5 - Art 4 - Art 3 -...
group_concat(name order by name desc separator ' - ' limit 3, 3)
text / blob(1048576) BINARY
Art 5 - Art 4 - Art 3
group_concat(name order by name desc separator ' - ' limit 3 offset 3)
text / blob(1048576) BINARY
Art 5 - Art 4 - Art 3
group_concat(name, '.', `type` order by `type` desc, name asc separator ' - ' limit 2, 6)
text / blob(1048576) BINARY
Art 4.Third - Art 7.Third - Art 2.Second - Art ...
group_concat(null)
text / blob(1048576) BINARY
NULL
Die Beispiele wurden mit dem MyWAY SQL-Manager erstellt: Download

Verwendung der GROUP_CONCAT() Funktion in MySQL und MariaDB-Datenbanken

Die Funktion GROUP_CONCAT in MySQL und MariaDB wird verwendet, um die Werte einer Spalte innerhalb einer Gruppe einer SQL-Abfrage in einer einzigen Zeichenfolge zu verketten. Die Funktion ermöglicht es, mehrere Werte mit optionalen Trennzeichen zu einer einzigen Zeichenfolge zu kombinieren und kann zum Beispiel für Aufgaben wie das Aggregieren von Daten aus mehreren Zeilen in einer einzigen Zeichenfolge, das Erstellen durch Kommas getrennter Listen und das Generieren von zusammenfassenden Berichten verwendet werden.

Durch das verketten von Werten in Gruppen können verwandte Werte in einer durch Kommas getrennten Liste oder einem anderen gewünschten Format kombiniert werden. Weiter kann das Schlüsselwort DISTINCT genutzt werden, um doppelte Werte vor der Verkettung zu entfernen, zum Beispiel um redundante Werte in verketteten Ergebnissen auszuschließen. Auch kann die Reihenfolge der Werte bestimmt und benutzerdefinierte Trennzeichen in verketteten Ergebnissen angegeben werden.
FROM_UNIXTIMEGET_FORMATGREATESTGROUP_CONCATHEXHOURIF

Weitere MySQL und MariaDB SQL Aggregat-Funktionen

ANY_VALUEANY_VALUE(Spalte)
Mehr zur ANY_VALUE-Funktion

AVGAVG(Ausdruck oder Spalte)
Mehr zur AVG-Funktion

BIT_ANDBIT_AND(Ausdruck oder Spalte)
Mehr zur BIT_AND-Funktion

BIT_ORBIT_OR(Ausdruck oder Spalte)
Mehr zur BIT_OR-Funktion

BIT_XORBIT_XOR(Ausdruck oder Spalte)
Mehr zur BIT_XOR-Funktion

COUNTCOUNT(Ausdruck oder Spalte)
Mehr zur COUNT-Funktion

JSON_ARRAYAGGJSON_ARRAYAGG(Ausdruck oder Spalte)

JSON_OBJECTAGGJSON_OBJECTAGG(Ausdruck oder Spalte)

MAXMAX(Ausdruck oder Spalte)
Mehr zur MAX-Funktion

MINMIN(Ausdruck oder Spalte)
Mehr zur MIN-Funktion

SUMSUM(Ausdruck oder Spalte)
Mehr zur SUM-Funktion

STDSTD(Ausdruck oder Spalte)
Mehr zur STD-Funktion

STDDEVSTDDEV(Ausdruck oder Spalte)
Mehr zur STDDEV-Funktion

STDDEV_POPSTDDEV_POP(Ausdruck oder Spalte)
Mehr zur STDDEV_POP-Funktion

STDDEV_SAMPSTDDEV_SAMP(Ausdruck oder Spalte)
Mehr zur STDDEV_SAMP-Funktion

VAR_POPVAR_POP(Ausdruck oder Spalte)
Mehr zur VAR_POP-Funktion

VAR_SAMPVAR_SAMP(Ausdruck oder Spalte)
Mehr zur VAR_SAMP-Funktion

VARIANCEVARIANCE(Ausdruck oder Spalte)
Mehr zur VARIANCE-Funktion

Numerische FunktionenZeichenketten-FunktionenReguläre AusdrückeDatum und Zeit-Funktionen
Vergleichs-FunktionenVerschlüsselung & KomprimierungKonvertierungs-FunktionenNULL-Funktionen
Aggregat-FunktionenWindow-FunktionenJSON-FunktionenGeometrische Funktionen
Sequenz-FunktionenInformations-FunktionenDynamische Tabellen-SpaltenSonstige Funktionen
Weitere Informationen zur SQL-Funktion GROUP_CONCAT: mysql.com und mariadb.com
Aktualisiert: 17.09.2023ImpressumKontaktGeschäftsbedingungenDatenschutz & CookiesUpdatesSitemapFacebookLinkedinTwitterStatistics©2020-2024 Heino Cunze-Fischer