ホームページ > データベース > mysql チュートリアル > GROUP_CONCAT を使用して MySQL で複数の子行を 1 つの親行に結合するにはどうすればよいですか?

GROUP_CONCAT を使用して MySQL で複数の子行を 1 つの親行に結合するにはどうすればよいですか?

DDD
リリース: 2024-11-27 17:07:11
オリジナル
835 人が閲覧しました

How to Combine Multiple Child Rows into a Single Parent Row in MySQL Using GROUP_CONCAT?

MySQL で子行を 1 つの親行に結合する

ここで提示する課題には、Ordered_Item と Ordered_Options という 2 つのテーブルのデータを結合することが含まれます。目標は、Ordered_Options のその項目に関連付けられたすべてのオプションの連結を含む、Ordered_Item の項目ごとに 1 行を出力することです。

データベース構造

**Ordered_Item**
ID | Item_Name
1  | Pizza
2  | Stromboli

**Ordered_Options**
Ordered_Item_ID | Option_Number | Value
1               43         Pepperoni
1               44         Extra Cheese
2               44         Extra Cheese
ログイン後にコピー

提案されたソリューション

提供されたクエリの試行ですが、構文的には正しく、複数の結合を使用した可能なアプローチを示しています。ただし、GROUP_CONCAT 関数を使用すると、より効率的な解決策を実現で​​きます。

GROUP_CONCAT を使用すると、複数の行の値を 1 つの文字列に連結できます。次のクエリは、GROUP_CONCAT を利用して目的の出力を実現します。

select
  ordered_item.id as `Id`,
  ordered_item.Item_Name as `ItemName`,
  GROUP_CONCAT(Ordered_Options.Value) as `Options`
from
  ordered_item,
  ordered_options
where
  ordered_item.id=ordered_options.ordered_item_id
group by
  ordered_item.id
ログイン後にコピー

出力

Id              ItemName       Options

1               Pizza          Pepperoni,Extra Cheese

2               Stromboli      Extra Cheese
ログイン後にコピー

追加の考慮事項

  • 複数のオプション:このソリューションでは、クエリに追加の変更を加えることなく、項目ごとに任意の数のオプションを処理できます。
  • Truncation: 連結結果がデフォルトの最大長を超える場合は、SET SESSION group_concat_max_len = 8192; の使用を検討してください。制限を増やすには。

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

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