ホームページ  >  記事  >  データベース  >  MySQL を使用して複数の行をカンマ区切りの文字列に結合するにはどうすればよいですか?

MySQL を使用して複数の行をカンマ区切りの文字列に結合するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-22 16:44:12359ブラウズ

How can I Combine Multiple Rows into a Comma-Separated String Using MySQL?

MySQL: 複数の行をカンマ区切りの文字列に統合する

MySQL では、GROUP_CONCAT 関数を使用して複数の行を 1 つの文字列にマージできます。単一のカンマ区切りの文字列。この手法は、1 対多の関係を持つテーブルのデータを組み合わせる場合に特に役立ちます。

問題ステートメント

次のテーブルについて考えてみましょう:

| DISH |
|---|---|
| dish_id | dish_name |
| 1 | dish_1 |
| 2 | dish_2 |
| 3 | dish_3 |
| 4 | dish_4 |

| DISH_HAS_DISHES |
|---|---|
| meal_id | dish_id |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |

目標は、このデータを、各食事 ID がディッシュ ID のカンマ区切りリストに関連付けられる形式に変換することです。料理名。望ましい出力は次のとおりです。

| meal_id | dish_ids | dish_names |
|---|---|---|
| 1 | 2,3,4 | dish_2, dish_3, dish_4 |

ソリューション

GROUP_CONCAT 関数は、この統合を達成する効率的な方法を提供します。次のクエリは、DISH テーブルと DISH_HAS_DISHES テーブルを結合し、結果を Meal_id でグループ化し、GROUP_CONCAT 関数を使用して各グループのdish_id 値とdish_name 値を連結します。

SELECT m.meal_id,
       GROUP_CONCAT(dish_id) AS dish_ids,
       GROUP_CONCAT(dish_name) AS dish_names
FROM DISH_HAS_DISHES m JOIN DISH d ON (m.dish_id = d.dish_id)
GROUP BY meal_id;

Result

このクエリを実行すると、目的のものが生成されます。出力:

| meal_id | dish_ids | dish_names |
|---|---|---|
| 1 | 2,3,4 | dish_2, dish_3, dish_4 |

結論

GROUP_CONCAT 関数は、複数の行を 1 つの文字列に結合するための強力なツールを提供します。この手法は、1 対多のリレーションシップの場合など、関連するテーブルのデータを統合する必要があるシナリオで特に役立ちます。

以上がMySQL を使用して複数の行をカンマ区切りの文字列に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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