PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

केवल उन स्तंभों के साथ क्वेरी में शामिल हों जिनके सभी मान `इन` खंड . में हैं

आप आईडी को एक सरणी में एकत्रित करके ऐसा कर सकते हैं और फिर उसकी तुलना इच्छित आईडी की सूची से कर सकते हैं:

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. Pgbackrest डेल्टा को पुनर्स्थापित करें और पुनर्स्थापित करें

  3. क्या मैं पहले से किए गए लेन-देन को रोलबैक कर सकता हूं? (डेटा हानि)

  4. PostgreSQL:मैं उपयोगकर्ता स्तर पर search_path कैसे सेट करूं?

  5. कैसे make_interval () PostgreSQL में काम करता है