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

クエリ結果をMariaDBのコンマ区切りリストに変換する

    MariaDBでは、GROUP_CONCAT()を使用できます クエリ結果をコンマ区切りのリストとして返す関数。つまり、特定の列について、すべての行を、その列を構成する値のコンマ区切りのリストを含む単一の行に変換できます。各行はリスト内の個別の項目です。

    次のクエリを実行するとします。

    SELECT meal 
    FROM guest_meals;

    結果:

    +---------+
    | meal    |
    +---------+
    | Salad   |
    | Fish    |
    | Burrito |
    | Pasta   |
    | Salad   |
    | Salad   |
    +---------+
    6 rows in set (0.001 sec)

    そのクエリの結果は6行でした。

    これらの行は、次のように1つのコンマ区切り行に変換できます。

    SELECT GROUP_CONCAT(meal) 
    FROM guest_meals;

    結果:

    +--------------------------------------+
    | GROUP_CONCAT(meal)                   |
    +--------------------------------------+
    | Salad,Fish,Burrito,Pasta,Salad,Salad |
    +--------------------------------------+
    1 row in set (0.003 sec)

    区切り文字を変更する

    SEPARATORを前に付けて関数に渡すことで、独自のセパレーターを指定できます。 キーワード:

    SELECT GROUP_CONCAT(meal SEPARATOR ' + ') 
    FROM guest_meals;

    結果:

    Salad + Fish + Burrito + Pasta + Salad + Salad

    結果の注文

    ORDER BYを使用して結果を並べ替えることができます 関数の句:

    SELECT GROUP_CONCAT(meal ORDER BY meal ASC) 
    FROM guest_meals;

    結果:

    Burrito,Fish,Pasta,Salad,Salad,Salad

    一意の値のみを返す

    DISTINCTを使用できます 一意の値のみを返す句:

    SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC) 
    FROM guest_meals;

    結果:

    Burrito,Fish,Pasta,Salad

    結果を制限する

    LIMITを使用できます リスト内のアイテムの数を制限する句:

    SELECT GROUP_CONCAT(DISTINCT meal ORDER BY meal ASC LIMIT 3) 
    FROM guest_meals;

    結果:

    Burrito,Fish,Pasta

    グループ化されたクエリ

    GROUP_CONCAT() この関数は、グループ化されたクエリを実行するときに便利です。 MariaDBのGROUP_CONCAT()を参照してください 例として。


    1. Oracleのピボットテーブルを使用したアドバイス

    2. SQLServerでGUIを使用して列を変更する方法または変更スクリプトを生成する方法-SQLServer/T-SQLチュートリアルパート38

    3. PL / SQLを使用して、ファイルの内容をBLOBに取り込むにはどうすればよいですか?

    4. 別の表領域を使用してクエリから表を作成する(Oracle SQL)