ホームページ >データベース >mysql チュートリアル >GROUP_CONCATを使用してSQLiteで複数の値を単一の文字列に結合する方法は?

GROUP_CONCATを使用してSQLiteで複数の値を単一の文字列に結合する方法は?

DDD
DDDオリジナル
2024-11-01 12:00:29615ブラウズ

How to Combine Multiple Values into a Single String in SQLite Using GROUP_CONCAT?

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 関数を正しく実装するには、以下を行う必要があります。

  • GROUP BY 句を指定する: GROUP_CONCAT のような集計関数を使用する場合、結果をグループ化するには GROUP BY 句が必要です。
  • テーブルのリレーションシップに JOIN を使用する: 必要なテーブルを適切な列に結合して、それらの間のリレーションシップを確立します。

したがって、目的の出力を生成する修正されたクエリは次のようになります。 :

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。