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

複数のMySQL行を1つのフィールドに連結できますか?

    GROUP_CONCAT

    SELECT person_id,
       GROUP_CONCAT(hobbies SEPARATOR ', ')
    FROM peoples_hobbies
    GROUP BY person_id;
    

    ルートヴィヒがコメント、 DISTINCTを追加できます 重複を避けるための演算子:

    SELECT person_id,
       GROUP_CONCAT(DISTINCT hobbies SEPARATOR ', ')
    FROM peoples_hobbies
    GROUP BY person_id;
    

    Janがコメント、 ORDER BY を使用して、値を変換する前に値を並べ替えることもできます。 :

    SELECT person_id, 
           GROUP_CONCAT(hobbies ORDER BY hobbies ASC SEPARATOR ', ')
    FROM peoples_hobbies
    GROUP BY person_id;
    

    Dagが彼のコメント 結果には1024バイトの制限があります。これを解決するには、クエリの前に次のクエリを実行します:

    SET group_concat_max_len = 2048;
    

    もちろん、 2048を変更することもできます あなたのニーズに応じて。値を計算して割り当てるには:

    SET group_concat_max_len = CAST(
                         (SELECT SUM(LENGTH(hobbies)) + COUNT(*) * LENGTH(', ')
                               FROM peoples_hobbies
                               GROUP BY person_id) AS UNSIGNED);
    


    1. MySQLサーバーを起動、再起動、ステータスを確認、および停止する方法

    2. 問題ORA-00001:INSERT/UPDATEでの一意性制約違反

    3. MySQLのMIN()とLEAST():違いは何ですか?

    4. Oracle監査の存続