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

PostgreSQL上のSQLを使用して配列内の複数の行を連結します

    これはPostgresに組み込まれているため、いくつかのバージョンから独自に定義する必要がなくなり、名前はarray_agg()になります。 。

    test=> select array_agg(n) from generate_series(1,10) n group by n%2;
      array_agg   
    --------------
     {1,3,5,7,9}
     {2,4,6,8,10}
    

    (これはPostgres 8.4.8です。)

    ORDER BYはないことに注意してください が指定されているため、結果行の順序は、使用されるグループ化方法(ここでは、ハッシュ)によって異なります。つまり、定義されていません。例:

    test=> select n%2, array_agg(n) from generate_series(1,10) n group by (n%2);
     ?column? |  array_agg   
    ----------+--------------
            1 | {1,3,5,7,9}
            0 | {2,4,6,8,10}
    
    test=> select (n%2)::TEXT, array_agg(n) from generate_series(1,10) n group by (n%2)::TEXT;
     text |  array_agg   
    ------+--------------
     0    | {2,4,6,8,10}
     1    | {1,3,5,7,9}
    

    さて、なぜ{10,2,4,6,8}を取得するのかわかりません および{9,7,3,1,5}generate_series()以降 行を順番に送信する必要があります。



    1. MySQLのバイナリデータ

    2. 整数の配列がありますが、mysqlクエリ(php)でそれぞれをどのように使用しますか?

    3. 2020年の計画でデータベース監視を優先する必要がある4つの理由

    4. 新鮮な+経験豊富な人のための一般的なMySqlインタビューの質問と回答