MySQL: 複数の行を単一のカンマ区切りの行に変換する
MySQL データベース内では、次のような状況に遭遇することがあります。複数の行を 1 つの行に圧縮し、特定の列をカンマ区切り値として表します。これは、次のシナリオ例に示すように、GROUP_CONCAT 関数を利用することで実現できます。
シナリオ例:
2 つのテーブル DISH と DISH_HAS_DISHES を考えます。ここで、DISH は利用可能なすべての料理、および DISH_HAS_DISHES は DISH 間の 1 対多の関係を定義します。 DISH テーブルの構造は次のとおりです:
DISH: dish_id dish_name 1 dish_1 2 dish_2 3 dish_3 4 dish_4
DISH_HAS_DISHES テーブルは次のようになります:
DISH_HAS_DISHES: meal_id dish_id 1 2 1 3 1 4
目的:
私たちの目的各食事に対応する行があり、その料理 ID と名前がカンマ区切り値としてリストされる形式にデータを変換することです。望ましい出力は次のとおりです:
meal_id dish_ids dish_names 1 2,3,4 dish_2, dish_3, dish_4
解決策:
これを実現するには、いくつかの簡単な JOIN 操作とともに GROUP_CONCAT 関数を使用します:
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
このクエリでは:
次のコマンドを実行します。このクエリを実行すると、目的の出力が得られます。各行は、食事、その料理 ID、および対応する料理名を表し、すべてカンマ区切りの値で表されます。この手法は、表形式のデータを操作し、複数の行にわたる情報を統合する場合に特に役立ちます。
以上がMySQL で複数の行を単一のカンマ区切りの行に結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。