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

в postgres select, връща подзаявка за колона като масив?

Използвайте агрегирана функция :

select
    usr_id, 
    name, 
    array_agg(tag_id) as tag_arr
from users
join tags using(usr_id)
group by usr_id, name

или конструктор на масив от резултатите на подзаявка:

select
    u.usr_id, 
    name, 
    array(
        select tag_id 
        from tags t 
        where t.usr_id = u.usr_id
        ) as tag_arr
from users u

Втората опция е проста заявка с един източник, докато първата е по-обща, особено удобна, когато имате нужда от повече от един агрегат от свързана таблица. Освен това първият вариант трябва да е по-бърз на по-големи маси.

Имайте предвид, че за по-добра производителност usr_id колоните и в двете таблици трябва да бъдат индексирани. Докато обикновено users.usr_id е първичен ключ, понякога човек може да забрави, че индексът на препращащата колона също е полезен.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възстановете базата данни на PostgreSQL с помощта на java

  2. Възможно ли е да получите история на заявките, направени в postgres

  3. Име на базата данни Heroku postgresql

  4. Грешки в еволюцията на Heroku

  5. Бавно подреждане на заявките по колона в обединена таблица