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

Gabungkan kueri dengan hanya kolom yang memiliki semua nilai dalam klausa `dalam`

Anda dapat melakukannya dengan menggabungkan ID ke dalam larik lalu membandingkannya dengan daftar ID yang dimaksud:

select v.*
from venues v
  join amenity_venue av ON av.venue_id = v.id
group by v.id
having array_agg(av.amenity_id) @> array['aaa', 'bbb'];

Di atas mengasumsikan bahwa venue.id dideklarasikan sebagai kunci utama (karena group by ).

Anda tidak perlu melakukan hardcode ID dalam kueri jika Anda hanya ingin meneruskan nama fasilitas:

select v.*
from venues v
  join amenity_venue av ON av.venue_id = v.id
group by v.id
having array_agg(av.amenity_id) @> array(select id 
                                         from amenities 
                                         where name in ('first amenity', 'second amenity'));

Contoh online:https://rextester.com/FNNVXO34389



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menambahkan kunci utama peningkatan otomatis ke tabel yang ada, di PostgreSQL?

  2. Bagaimana mengubah pengkodean koleksi database template

  3. Pembaruan massal/batch/upsert di PostgreSQL

  4. Cara Menggunakan pgBackRest untuk Mencadangkan PostgreSQL dan TimescaleDB

  5. Bagaimana saya bisa mengatur parameter String[] ke kueri asli?