SQLite の GROUP_CONCAT 関数
この記事では、データのグループ化と連結を実現する SQLite の GROUP_CONCAT 関数の使用法と実装について説明します。
概要
列 _id と Name を持つテーブルがあり、データが次のように格納されているとします。
1 A 1 B 1 C 1 D 2 E 2 F 3 G 3 H 3 I 3 J 3 K
目的の結果を取得するにはここで、以下に示すように、それぞれの一意の _id には、関連付けられた Name 値の連結リストが含まれます。
1 A,B,C,D 2 EF
これを実現するには、GROUP_CONCAT 関数を利用できます。
実装
提供されたクエリに小さな問題がありました。 GROUP_CONCAT 関数を正しく実装するには、以下を行う必要があります。
したがって、目的の出力を生成する修正されたクエリは次のようになります。 :
SELECT AI._id, GROUP_CONCAT(Name) AS GroupedName FROM ABSTRACTS_ITEM AI JOIN AUTHORS_ABSTRACT AAB ON AI._id = AAB.ABSTRACTSITEM_ID JOIN ABSTRACT_AUTHOR AAU ON AAU._id = AAB.ABSTRACTAUTHOR_ID GROUP BY AI._id;
代替構文
また、クエリを次のように構成することもできます。
SELECT ID, GROUP_CONCAT(NAME) FROM (select ABSTRACTS_ITEM._id AS ID, Name from ABSTRACTS_ITEM , ABSTRACT_AUTHOR , AUTHORS_ABSTRACT where ABSTRACTS_ITEM._id = AUTHORS_ABSTRACT.ABSTRACTSITEM_ID and ABSTRACT_AUTHOR._id = AUTHORS_ABSTRACT.ABSTRACTAUTHOR_ID) GROUP BY ID;
この代替構文では、最初にサブクエリを実行して必要なデータをフェッチし、その結果に GROUP_CONCAT 関数を適用します。
結論
SQLite で GROUP_CONCAT 関数を JOIN 操作および GROUP と組み合わせて使用することにより、 BY 句を使用すると、結果セット内の値を効果的にグループ化して連結できます。
以上がGROUP_CONCATを使用してSQLiteで複数の値を単一の文字列に結合する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。