ホームページ  >  記事  >  データベース  >  MySQL で複数の行を単一のカンマ区切りの行としてフェッチするにはどうすればよいですか?

MySQL で複数の行を単一のカンマ区切りの行としてフェッチするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-14 13:49:02392ブラウズ

How to Fetch Multiple Rows as a Single Comma-Separated Row in MySQL?

MySQL で複数の行を単一のカンマ区切り行としてフェッチする

問題ステートメント:

2 つのテーブルがあります。料理が1対多で関連付けられる「DISH」と「DISH_HAS_DISHES」依存性。目標は、両方のテーブルから特定の形式 (各食事の料理 ID と名前のカンマ区切りリスト) でデータを取得することです。

GROUP_CONCAT 関数を使用した提案されたソリューション:

MySQL は、指定された区切り文字に基づいて複数の行を連結できる GROUP_CONCAT 関数を提供します。この関数を利用すると、目的の出力を実現できます:

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

説明:

  1. "DISH_HAS_DISHES" (m) と "DISH" ( d) 共通のdish_idフィールドに基づくテーブル。
  2. を使用します。 GROUP_CONCAT(dish_id) は、食事ごとに料理 ID をカンマ区切りの文字列に連結します。これをdish_ids列に保存します。
  3. 同様に、GROUP_CONCAT(dish_name)を使用して料理名をカンマ区切りの文字列に連結し、dish_names列に保存します。
  4. GROUP BY Meal_Idにより、次のことが保証されます。結果は食事 ID ごとにグループ化され、それぞれの行が 1 行になります。 Meal.

このクエリは、目的の出力形式を生成する必要があります:

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

以上がMySQL で複数の行を単一のカンマ区切りの行としてフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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