PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

di postgres pilih, kembalikan subquery kolom sebagai array?

Gunakan fungsi gabungan :

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

atau konstruktor array dari hasil subquery:

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

Opsi kedua adalah kueri satu sumber sederhana sedangkan yang pertama lebih umum, terutama nyaman saat Anda membutuhkan lebih dari satu agregat dari tabel terkait. Selain itu, varian pertama harus lebih cepat pada tabel yang lebih besar.

Perhatikan, bahwa untuk kinerja yang lebih baik usr_id kolom di kedua tabel harus diindeks. Sementara biasanya users.usr_id adalah kunci utama, terkadang orang mungkin lupa bahwa indeks kolom referensi juga berguna.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BUAT EKSTENSI postgis gagal,

  2. Pemilihan skema PostgreSQL runtime dinamis di jOOQ

  3. Bagaimana cara kerja tampilan keamanan_barrier PostgreSQL?

  4. Cara Membuat Histogram di PostgreSQL

  5. Seberapa besar terlalu besar untuk tabel PostgreSQL?