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

MySQLNestedSelectは結果のリターンリストを選択できますか

    <を使用することをお勧めします。 code> GROUP_CONCAT() 次のように機能します:

    SELECT    t1.id, 
              t1.first_name, 
              t1.last_name,
              GROUP_CONCAT(DISTINCT job_id ORDER BY job_id SEPARATOR ',') job_id
    FROM      Table1 t1
    JOIN      Table2 t2 ON (t2.Person_id = t1.id)
    GROUP BY  t1.id;
    

    サンプルデータでテストしてみましょう:

    CREATE TABLE Table1 (
        id int AUTO_INCREMENT PRIMARY KEY, 
        first_name varchar(50), 
        last_name varchar(50));
    
    CREATE TABLE Table2 (
        id int AUTO_INCREMENT PRIMARY KEY, 
        person_id int,
        job_id int);
    
    INSERT INTO Table1 VALUES (NULL, 'Joe', 'Bloggs');
    INSERT INTO Table1 VALUES (NULL, 'Mike', 'Smith');
    INSERT INTO Table1 VALUES (NULL, 'Jane', 'Doe');
    
    INSERT INTO Table2 VALUES (NULL, 1, 1);
    INSERT INTO Table2 VALUES (NULL, 1, 2);
    INSERT INTO Table2 VALUES (NULL, 2, 2);
    INSERT INTO Table2 VALUES (NULL, 3, 3);
    INSERT INTO Table2 VALUES (NULL, 3, 4);
    

    クエリの結果:

    +----+------------+-----------+--------+
    | id | first_name | last_name | job_id |
    +----+------------+-----------+--------+
    |  1 | Joe        | Bloggs    | 1,2    | 
    |  2 | Mike       | Smith     | 2      | 
    |  3 | Jane       | Doe       | 3,4    | 
    +----+------------+-----------+--------+
    

    デフォルトでは、 GROUP_CONCAT()の結果に注意してください。 の最大長に切り捨てられます1024 。ただし、これははるかに大きく設定できます。値 。次のように変更する必要がある場合は、SETコマンドを使用します。

    SET GLOBAL group_concat_max_len = 2048;
    



    1. JSON_REMOVE()–MySQLのJSONドキュメントからデータを削除します

    2. Pl/pgsql関数のCOPYステートメントを使用して診断を取得する

    3. varchar2(n BYTE | CHAR)デフォルト->CHARまたはBYTE

    4. TSQLコードからWebサービスを呼び出すことはできますか?