sql >> データベース >  >> RDS >> Mysql

複数の子行を1つの行に結合するMYSQL

    最も簡単な方法は、ここで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
    

    そうすれば、クエリを変更することなく、必要な数のオプションを使用できます。

    ああ、結果がトリミングされているのを確認したら、次のようにGROUP_CONCATのサイズ制限を増やすことができます:

    SET SESSION group_concat_max_len = 8192;
    


    1. Oracle Database Security:データベース監査

    2. PostgreSQLの主キーとしてのUUIDは、インデックスのパフォーマンスを低下させますか?

    3. MySQLクイックヒント:DAYOFWEEK関数の使用

    4. SQL Serverのセッションコンテキストでのキーと値のペアの設定(sp_set_session_context)