PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Конкатениране на множество редове в масив с SQL на PostgreSQL

Това е вграден 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Проверете дали JSON масивът на Postgres съдържа низ

  2. Показване на изображение от база данни PostgreSQL, bytea

  3. Мащабиране на PostgreSQL с помощта на пулери за връзки и балансьори на натоварване

  4. как да покажа пълния код на съхранената процедура?

  5. Вземете идентификатор от условно INSERT