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

Обединете заявката само с колони, които имат всички стойности в клаузата „in“.

Можете да направите това, като агрегирате идентификаторите в масив и след това го сравните със списъка с предназначени идентификатори:

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

Горното предполага, че venue.id е деклариран като първичен ключ (поради group by ).

Всъщност не е необходимо да кодирате идентификаторите в заявката, ако искате просто да предадете имената на удобствата:

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

Онлайн пример: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. Намерете разликата между времевите марки в секунди в PostgreSQL

  2. gem install pg не работи на OSX Lion

  3. Как да използвате модела за машинно обучение KNN с 2UDA – PostgreSQL и Orange (Част 1)

  4. дублираният ключ на postgresql нарушава уникалното ограничение

  5. Как да създадете последователност, ако не съществува