MySQL で GROUP_CONCAT を使用して複数の行をカンマ区切りの値を持つ 1 つの行に結合するにはどうすればよいですか?

DDD
リリース: 2024-11-16 05:22:02
オリジナル
281 人が閲覧しました

How can I use GROUP_CONCAT to combine multiple rows into a single row with comma-separated values in MySQL?

MySQL でのカンマ区切り値としての行の抽出: GROUP_CONCAT 関数の探索

MySQL で複数の行をカンマ区切り値を含む単一の行に変換するという課題がよく発生します。複数のテーブルの関連データを扱う場合。このタスクは、強力な GROUP_CONCAT 関数を利用してエレガントに実行できます。

この目標を達成するには、提供されている例を検討してください。 2 つのテーブル DISH と DISH_HAS_DISHES は、料理と食事の間の 1 対多の関係を表します。要件は、各食事の料理 ID と名前をカンマ区切りの値として照合する形式を作成することです。

解決策は GROUP_CONCAT 関数にあります。この関数は、行のグループごとに式の値を効果的に連結し、単一の文字列を生成します。この場合、式はdish_id属性とdish_name属性の組み合わせです。

データを変換するには、DISH_HAS_DISHESテーブルとDISHテーブルを結合するクエリを作成できます。

SELECT
  m.meal_Id,
  GROUP_CONCAT(dish_id) AS dish_ids,
  GROUP_CONCAT(dish_name) AS dish_names
FROM
  DISH_HAS_DISHES AS m
JOIN
  DISH AS d
ON
  (m.dish_id = d.dish_id)
GROUP BY
  m.meal_Id;
ログイン後にコピー

JOINステートメントGROUP BY は、meal_id 列ごとに行をグループ化しますが、2 つのテーブルをリンクします。各食事について、GROUP_CONCAT 関数は、dish_id と dish_name の値をそれぞれ、コンマで区切って、dish_ids 列とdish_names 列に集計します。

その結果、クエリは、目的の形式、つまり食事ごとに単一の行を生成します。カンマ区切りの料理 ID と名前。 GROUP_CONCAT 関数を使用すると、MySQL で複数の行をカンマ区切りの値を含む 1 つの行として抽出するという課題が効率的に解決されます。さらに、このアプローチはさまざまなデータベース シナリオに適用でき、データの取得と操作の機能が強化されます。

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

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