sql >> データベース >  >> NoSQL >> MongoDB

SQLで複数の行をコンマ区切りリストに入れる方法

    主要なRDBMSのほとんどには、クエリ結果をコンマ区切りのリストとして返すことができる関数があります。

    つまり、このような関数を使用して、各行をコンマ区切りのリスト内の個別のリスト項目に変換できます。

    以下は、より一般的なRDBMSのいくつかでこれを実現する方法の例です。

    MySQL

    MySQLにはGROUP_CONCAT()があります クエリ結果をコンマ区切りのリストで出力できるようにする関数:

    SELECT GROUP_CONCAT(PetName) 
    FROM Pets;

    結果:

    Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

    また、重複する値を削除するなどのこともできます(DISTINCTを使用) 句)、結果の順序を指定します(ORDER BYを使用) 句)、別の区切り文字を指定します。

    GROUP_CONCAT()を参照してください その他の例については、MySQLで機能してください。

    Oracleデータベース

    OracleDatabaseにはLISTAGG()があります 機能:

    SELECT LISTAGG(last_name, ', ')
    FROM employees
    WHERE job_id = 'IT_PROG';

    結果:

    Hunold, Ernst, Austin, Pataballa, Lorentz    

    MySQLと同様に、Oracle Databaseでは、重複する値の削除、結果の順序の指定、別の区切り文字の指定なども可能です。

    LISTAGG()を参照してください その他の例については、Oracleで機能してください。

    SQL Server

    SQLServerにはSTRING_AGG()があります 結果をコンマ区切りのリストで返す関数:

    SELECT STRING_AGG(Genre, ',') AS Result FROM Genres

    結果:

    Rock,Jazz,Country,Pop,Blues,Hip Hop,Rap,Punk

    重複する値を削除したり、結果の順序を指定したり、区切り文字を変更したりすることもできます。

    その他の例については、SQLServerでクエリ結果をコンマ区切りリストとして返す方法を参照してください。

    MariaDB

    MySQLと同様に、MariaDBにもGROUP_CONCAT()があります 機能:

    SELECT GROUP_CONCAT(PetName) 
    FROM Pets;

    結果:

    Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

    同じ名前のMySQLの関数と同様に、重複する値を削除するなどのこともできます(DISTINCTを使用) 句)、結果の順序を指定します(ORDER BYを使用) 句)、区切り文字を変更するなど

    ただし、MariaDBがMySQLに対して持っていることの1つは、LIMITです。 句。リスト内の結果の数を制限する機能を提供します。

    MariaDBのGROUP_CONCAT()を参照してください その他の例については。

    PostgreSQL

    Postgresには STRING_AGG()があります 機能:

    SELECT STRING_AGG(PetName, ',') 
    FROM Pets;

    結果:

    Fluffy,Fetch,Scratch,Wag,Tweet,Fluffy,Bark,Meow

    重複する値を削除することもできます(DISTINCTを使用) 句)、結果の順序を指定します(ORDER BYを使用) 句)、セパレータを変更するなど。

    STRING_AGG()を参照してください その他の例については、PostgreSQLで機能してください。

    SQLite

    SQLiteでは、GROUP_CONCAT()を使用できます クエリ結果をコンマ区切りのリストに変換する関数:

    SELECT group_concat(FirstName)
    FROM Employee;

    結果:

    Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura

    GROUP_CONCAT()の方法をご覧ください その他の例についてはSQLiteで動作します。

    複数の列

    上記の例はすべて、リストに1つの列を使用しています。複数の列を連結して、複数の列を含むリストを作成することもできます。

    次のデータを含むテーブルがあるとします。

    SELECT TaskId, TaskName 
    FROM Tasks;

    結果:

    TaskId  TaskName    
    ------  ------------
    1       Feed cats   
    2       Water dog   
    3       Feed garden 
    4       Paint carpet
    5       Clean roof  
    6       Feed cats   

    SQL Serverでは、次の手順を実行して、両方の列を1つの行に出力できます。

    SELECT STRING_AGG(CONCAT(TaskId, ') ', TaskName), ' ') 
    FROM Tasks

    結果:

    1) Feed cats 2) Water dog 3) Feed garden 4) Paint carpet 5) Clean roof 6) Feed cats

    1. pymongo接続のパスワードで@をエスケープする方法は?

    2. Redis-トランザクションでのIncr値の使用

    3. NodeJSとMongoDBFindAndModify()を削除または更新する必要があります

    4. RedisPubサブチャネルメモリ