SQLite heeft een group_concat()
functie waarmee u meerdere resultaten die voor een kolom zijn geretourneerd, kunt samenvoegen tot één.
Dit wordt soms "string-aggregatie" genoemd.
Als u bijvoorbeeld een database doorzoekt, kunt u in plaats van dat de waarde van elke kolom in een nieuwe rij wordt uitgevoerd, group_concat()
gebruiken om ze als een door komma's gescheiden lijst te laten uitvoeren.
Syntaxis
U kunt deze functie op een van de volgende manieren gebruiken:
group_concat(X)
group_concat(X,Y)
Met andere woorden, de group_concat()
functie kan met één of twee argumenten worden gebruikt.
Het tweede argument specificeert een teken dat als scheidingsteken moet worden gebruikt. Als u dit niet opgeeft, wordt een komma (,
) wordt gebruikt als scheidingsteken.
Voorbeeld met één argument
Hier is een voorbeeld van het aanroepen van group_concat()
met één argument.
SELECT group_concat(FirstName)
FROM Employee;
Resultaat:
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Als ik group_concat()
niet heb gebruikt om deze kolom samen te voegen, zouden de resultaten er als volgt hebben uitgezien:
SELECT FirstName
FROM Employee;
Resultaat:
Andrew Nancy Jane Margaret Steve Michael Robert Laura
Gebruik een aangepast scheidingsteken
Zoals vermeld, heb je de mogelijkheid om aan te geven welk teken je als scheidingsteken wilt gebruiken.
Hier is een voorbeeld van het specificeren van het pijpsymbool (|
) als scheidingsteken.
SELECT group_concat(FirstName, '|')
FROM Employee;
Resultaat:
Andrew|Nancy|Jane|Margaret|Steve|Michael|Robert|Laura
Hier is er nog een die een komma gebruikt, maar ook een spatie rechts van de komma toevoegt.
SELECT group_concat(FirstName, ', ')
FROM Employee;
Resultaat:
Andrew, Nancy, Jane, Margaret, Steve, Michael, Robert, Laura
De resultaten groeperen
U kunt meerdere kolommen retourneren en de GROUP BY
. gebruiken clausule om ze op de juiste manier te groeperen.
Hier is een voorbeeld.
SELECT ArtistId, group_concat(AlbumName)
FROM Albums
GROUP BY ArtistId LIMIT 10;
Resultaat:
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