PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tham gia truy vấn chỉ với các cột có tất cả các giá trị trong mệnh đề `in`

Bạn có thể thực hiện việc này bằng cách tổng hợp các ID thành một mảng và sau đó so sánh mảng đó với danh sách các ID dự định:

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

Phần trên giả định rằng venue.id được khai báo là khóa chính (vì nhóm group by ).

Bạn không thực sự cần phải mã hóa cứng các ID trong truy vấn nếu bạn chỉ muốn chuyển các tên tiện nghi:

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

Ví dụ trực tuyến: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. Cách pg_typeof () hoạt động trong PostgreSQL

  2. pgAdmin Alternatives - PostgreSQL Database Management GUI ClusterControl

  3. Kiểm tra Go song song được thực thi dựa trên cơ sở dữ liệu PostgreSQL chạy trên Docker

  4. Không thể kết nối với cơ sở dữ liệu postgresql của heroku từ ứng dụng nút cục bộ với phần tiếp theo

  5. DROP FUNCTION mà không cần biết số lượng / loại tham số?