SQLite
 sql >> Datenbank >  >> RDS >> SQLite

Wie Group_Concat() in SQLite funktioniert

SQLite hat ein group_concat() Funktion, mit der Sie mehrere für eine Spalte zurückgegebene Ergebnisse zu einem verketten können.

Dies wird manchmal als „String-Aggregation“ bezeichnet.

Wenn Sie beispielsweise eine Datenbank abfragen, können Sie group_concat() verwenden, anstatt den Wert jeder Spalte in einer neuen Zeile auszugeben um sie als kommagetrennte Liste auszugeben.

Syntax

Sie können diese Funktion auf eine der folgenden Arten verwenden:

group_concat(X)
group_concat(X,Y)

Mit anderen Worten, die group_concat() Die Funktion kann entweder mit einem oder zwei Argumenten verwendet werden.

Das zweite Argument gibt ein Zeichen an, das als Trennzeichen verwendet werden soll. Wenn Sie dies nicht angeben, wird ein Komma (, ) wird als Trennzeichen verwendet.

Beispiel mit einem Argument

Hier ist ein Beispiel für den Aufruf von group_concat() mit einem Argument.

SELECT group_concat(FirstName)
FROM Employee;

Ergebnis:

Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura

Wenn ich group_concat() nicht verwendet habe Um diese Spalte zu verketten, hätten die Ergebnisse so ausgesehen:

SELECT FirstName
FROM Employee;

Ergebnis:

Andrew    
Nancy     
Jane      
Margaret  
Steve     
Michael   
Robert    
Laura    

Verwenden Sie ein benutzerdefiniertes Trennzeichen

Wie erwähnt, haben Sie die Möglichkeit festzulegen, welches Zeichen als Trennzeichen verwendet werden soll.

Hier ist ein Beispiel für die Angabe des Pipe-Symbols (| ) als Trennzeichen.

SELECT group_concat(FirstName, '|')
FROM Employee;

Ergebnis:

Andrew|Nancy|Jane|Margaret|Steve|Michael|Robert|Laura

Hier ist eine andere, die ein Komma verwendet, aber auch ein Leerzeichen rechts vom Komma hinzufügt.

SELECT group_concat(FirstName, ', ')
FROM Employee;

Ergebnis:

Andrew, Nancy, Jane, Margaret, Steve, Michael, Robert, Laura

Ergebnisse gruppieren

Sie können mehrere Spalten zurückgeben und GROUP BY verwenden -Klausel, um sie entsprechend zu gruppieren.

Hier ist ein Beispiel.

SELECT ArtistId, group_concat(AlbumName) 
FROM Albums 
GROUP BY ArtistId LIMIT 10;

Ergebnis:

ArtistId  group_concat(AlbumName)                                                   
--------  --------------------------------------------------------------------------
1         Powerslave,Somewhere in Time,Piece of Mind,Killers,No Prayer for the Dying
2         Powerage                                                                  
3         All Night Wrong,The Sixteen Men of Tain                                   
4         Big Swing Face                                                            
5         Ziltoid the Omniscient,Casualties of Cool,Epicloud                        
6         Singing Down the Lane                                                     
7         Long Lost Suitcase,Praise and Blame,Along Came Jones                      
9         No Sound Without Silence                                                  
12        Blue Night,Eternity,Scandinavia