ホームページ >データベース >mysql チュートリアル >MySQL の GROUP_CONCAT はどのようにして条件付き連結を実現できるのでしょうか?

MySQL の GROUP_CONCAT はどのようにして条件付き連結を実現できるのでしょうか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-20 09:14:09908ブラウズ

How Can MySQL's GROUP_CONCAT Achieve Conditional Concatenation?

MySQL での条件付き連結に GROUP_CONCAT を利用する

データベース操作では、さまざまなニーズに合わせてデータをさまざまな形式に変換する必要があります。一般的なタスクの 1 つは、特定の識別子に関連付けられた複数の値を連結することです。 MySQL では、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 を利用して、各一意の識別子に関連付けられた複数の値を連結します。ソリューションの詳細な内訳は次のとおりです:

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 列を選択し、GROUP_CONCAT を使用してすべての一意の Name を連結することから始まります。各 ID に関連付けられた値を ColumnName という名前の新しい列に追加します。
  • 複数の値を実現するには連結では、ネストされたクエリを利用します。内部クエリは、ID と名前の両方で行をグループ化し、ID と名前の一意の組み合わせごとに Value 列を単一の文字列に連結します。結果は、各行の連結された値を含む Name という列です。
  • 次に、外側のクエリは、内側のクエリの結果を ID でグループ化し、GROUP_CONCAT を Name 列に適用し、目的の形式になります。

別の方法として、名前でグループ化せずにすべての値を連結したい場合は、クエリを次のように変更できます。以下:

select id,group_concat(concat(`name`,':',`value`) separator ',')
as Result from mytbl group by id

以上がMySQL の GROUP_CONCAT はどのようにして条件付き連結を実現できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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