SQLite har en group_concat()
funktion som låter dig sammanfoga flera resultat som returneras för en kolumn till en.
Detta kallas ibland för "strängaggregation".
Till exempel, när du frågar en databas, istället för att ha varje kolumns värde utmatad i en ny rad, kan du använda group_concat()
för att de ska matas ut som en kommaseparerad lista.
Syntax
Du kan använda den här funktionen på något av följande sätt:
group_concat(X)
group_concat(X,Y)
Med andra ord, group_concat()
funktion kan användas med antingen ett argument eller två.
Det andra argumentet anger ett tecken som ska användas som avgränsare. Om du inte anger detta kommer ett kommatecken (,
) kommer att användas som separator.
Exempel med ett argument
Här är ett exempel på hur du anropar group_concat()
med ett argument.
SELECT group_concat(FirstName)
FROM Employee;
Resultat:
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Om jag inte använde group_concat()
för att sammanfoga denna kolumn skulle resultaten ha sett ut så här:
SELECT FirstName
FROM Employee;
Resultat:
Andrew Nancy Jane Margaret Steve Michael Robert Laura
Använd en anpassad separator
Som nämnts har du möjlighet att ange vilket tecken som ska användas som avgränsare.
Här är ett exempel på hur du anger rörsymbolen (|
) som separator.
SELECT group_concat(FirstName, '|')
FROM Employee;
Resultat:
Andrew|Nancy|Jane|Margaret|Steve|Michael|Robert|Laura
Här är en annan som använder kommatecken, men som också lägger till ett blanksteg till höger om kommatecken.
SELECT group_concat(FirstName, ', ')
FROM Employee;
Resultat:
Andrew, Nancy, Jane, Margaret, Steve, Michael, Robert, Laura
Gruppera resultaten
Du kan returnera flera kolumner och använda GROUP BY
för att gruppera dem på lämpligt sätt.
Här är ett exempel.
SELECT ArtistId, group_concat(AlbumName)
FROM Albums
GROUP BY ArtistId LIMIT 10;
Resultat:
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