PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

w postgres select zwrócić podzapytanie kolumny jako tablicę?

Użyj funkcji agregującej :

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

lub konstruktor tablic z wyników podzapytania:

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

Druga opcja to proste zapytanie z jednego źródła, podczas gdy pierwsza jest bardziej ogólna, szczególnie wygodna, gdy potrzebujesz więcej niż jednej agregacji z powiązanej tabeli. Ponadto pierwszy wariant powinien działać szybciej na większych stołach.

Zauważ, że dla lepszej wydajności usr_id kolumny w obu tabelach powinny być indeksowane. Chociaż zazwyczaj users.usr_id jest kluczem podstawowym, czasami można zapomnieć, że indeks kolumny odniesienia jest również przydatny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można uzyskać dostępu do tabeli bez nazwy public.table. Czy istnieje sposób na pozbycie się opinii publicznej?

  2. Wywołanie procedury składowanej w Postgresql za pomocą F# i Npgsql

  3. Jak używać Joda-Time z java.sql.Timestamp

  4. Generowanie identyfikatora UUID w instrukcji Postgres for Insert?

  5. Formatuj liczby za pomocą przecinków w PostgreSQL