ホームページ > データベース > mysql チュートリアル > MySQL で複雑なデータ集約のために GROUP_CONCAT と CONCAT を組み合わせる方法は?

MySQL で複雑なデータ集約のために GROUP_CONCAT と CONCAT を組み合わせる方法は?

DDD
リリース: 2024-12-17 21:11:11
オリジナル
866 人が閲覧しました

How to Combine GROUP_CONCAT and CONCAT for Complex Data Aggregation in MySQL?

MySQL の CONCAT で GROUP_CONCAT を使用する方法

特定のシナリオでは、MySQL テーブルに格納されているデータを変換する必要が生じる場合があります。特定の形式に変換します。たとえば、次のようなデータを含むテーブルがあるとします。

id Name Value
1 A 4
1 A 5
1 B 8
2 C 9

目標は、次の結果を取得することです。

id Column
1 A:4,5,B:8
2 C:9

この変換を実現するには、以下を行う必要があります。 GROUP_CONCAT() 関数を利用します。この関数は、特定の条件でグループ化された複数の行の値を連結できる点で際立っています。

まず、ID と名前の両方でグループ化された値を連結するサブクエリを生成する必要があります。次のコード スニペットは、この手順を示しています。

select id, 
concat(`Name`, ':', group_concat(`Value` separator ',')) as Name
from mytbl group by id, Name
ログイン後にコピー

結果のサブクエリは、ID と Name の両方でグループ化され、コロンとカンマで連結されたすべての値を含む Name という新しい列を作成します。

| id | Name |
| --- | ---- |
| 1 | A:4,5 |
| 1 | B:8 |
| 2 | C:9 |
ログイン後にコピー

最後に、GROUP_CONCAT() を最も外側のクエリに再度適用します。今回はグループ化基準として ID を使用します。このステップでは、サブクエリの Name 値をコンマで区切って連結します:

select id, group_concat(`Name` separator ',') as `ColumnName`
from
(
  select id, 
  concat(`Name`, ':', group_concat(`Value` separator ',')) as Name
   from mytbl group by id, Name
) tbl
group by id;
ログイン後にコピー

結果は希望どおりになります:

| id | Column |
| --- | ----- |
| 1 | A:4,5,B:8 |
ログイン後にコピー

以上がMySQL で複雑なデータ集約のために GROUP_CONCAT と CONCAT を組み合わせる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート