SQLiteにはgroup_concat()
があります 1つの列に対して返された複数の結果を1つに連結できるようにする関数。
これは「文字列集約」と呼ばれることもあります。
たとえば、データベースにクエリを実行する場合、各列の値を新しい行に出力する代わりに、group_concat()
を使用できます。 それらをコンマ区切りのリストとして出力するようにします。
構文
この関数は、次のいずれかの方法で使用できます。
group_concat(X)
group_concat(X,Y)
つまり、group_concat()
関数は、1つまたは2つの引数で使用できます。
2番目の引数は、区切り文字として使用する文字を指定します。これを指定しない場合は、コンマ(,
)はセパレータとして使用されます。
引数が1つの例
group_concat()
を呼び出す例を次に示します。 引数が1つあります。
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