sql >> Database teknologi >  >> RDS >> PostgreSQL

Deltag i forespørgslen med kun kolonner, der har alle værdier i "in"-sætningen

Du kan gøre dette ved at samle ID'erne i en matrix og derefter sammenligne det med listen over påtænkte ID'er:

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'];

Ovenstående forudsætter, at venue.id er erklæret som den primære nøgle (på grund af group by ).

Du behøver ikke rigtig at hardkode ID'erne i forespørgslen, hvis du bare vil videregive faciliteternes navne:

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'));

Online eksempel:https://rextester.com/FNNVXO34389



  1. Refaktorer fremmednøgle til felter

  2. Sådan sletter du et SQL Server Agent-job i Azure Data Studio

  3. 2 måder at returnere rækker, der indeholder alfanumeriske tegn i MySQL

  4. Søg tekst i lagret procedure i SQL Server