SQLite има group_concat()
функция, която ви позволява да конкатенирате множество резултати, върнати за колона, в един.
Това понякога се нарича „агрегация на низове“.
Например, когато отправяте заявка към база данни, вместо стойността на всяка колона да бъде изведена в нов ред, можете да използвате group_concat()
за да ги изведе като списък, разделен със запетая.
Синтаксис
Можете да използвате тази функция по един от следните начини:
group_concat(X)
group_concat(X,Y)
С други думи, group_concat()
функцията може да се използва с един или два аргумента.
Вторият аргумент указва символ, който да се използва като разделител. Ако не посочите това, тогава запетая (,
) ще се използва като разделител.
Пример с един аргумент
Ето пример за извикване на group_concat()
с един аргумент.
SELECT group_concat(FirstName)
FROM Employee;
Резултат:
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Ако не използвах group_concat()
за да свържете тази колона, резултатите биха изглеждали така:
SELECT FirstName
FROM Employee;
Резултат:
Andrew Nancy Jane Margaret Steve Michael Robert Laura
Използвайте персонализиран разделител
Както споменахме, имате възможност да укажете кой знак да използвате като разделител.
Ето пример за определяне на символа на тръбата (|
) като разделител.
SELECT group_concat(FirstName, '|')
FROM Employee;
Резултат:
Andrew|Nancy|Jane|Margaret|Steve|Michael|Robert|Laura
Ето още един, който използва запетая, но също така добавя интервал отдясно на запетаята.
SELECT group_concat(FirstName, ', ')
FROM Employee;
Резултат:
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Групирайте резултатите
Можете да върнете няколко колони и да използвате GROUP BY
клауза, за да ги групирате по подходящ начин.
Ето един пример.
SELECT ArtistId, group_concat(AlbumName)
FROM Albums
GROUP BY ArtistId LIMIT 10;
Резултат:
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