MySQL में GROUP BY और HAVING का उपयोग करके शर्तों को मर्ज करना
आप GROUP BY और HAVING का उपयोग करके कई शर्तों को पूरा करने वाले समूह ढूंढ सकते हैं।
उदाहरण
टेबल बनाएं:
mysql> create table MergingSelectDemo (
-> RoomServicesId int,
-> RoomId int,
-> ServiceId int
-> );
डेटा डालें:
mysql> insert into MergingSelectDemo values(10, 10, 10); mysql> insert into MergingSelectDemo values(20, 10, 20); mysql> insert into MergingSelectDemo values(30, 10, 30); mysql> insert into MergingSelectDemo values(50, 10, 50); mysql> insert into MergingSelectDemo values(110, 20, 20); mysql> insert into MergingSelectDemo values(120, 20, 30);
कमरा खोजें जिसमें ServiceId 10, 20, 30 सभी हों:
mysql> select RoomId from MergingSelectDemo
-> where ServiceId IN (10, 20, 30)
-> group by RoomId
-> HAVING COUNT(*) = 3;
परिणाम:
+--------+ | RoomId | +--------+ | 10 | +--------+
व्याख्या
WHERE ServiceId IN (10, 20, 30): केवल ये तीन सेवा आईडी वाली पंक्तियाँ चुनेंGROUP BY RoomId: RoomId के अनुसार समूह बनाएंHAVING COUNT(*) = 3: केवल वही समूह जिनमें ठीक 3 पंक्तियाँ हों (यानी सभी तीन सेवाएँ मौजूद हों)
विविधता
यदि डुप्लिकेट सेवा आईडी हो सकते हैं, तो COUNT(DISTINCT ServiceId) = 3 का उपयोग करें।
संबंधित अवधारणा: संबंधपरक विभाजन
यह पैटर्न "सभी शर्तें पूरी करने वाली इकाइयाँ ढूंढना" (Relational Division) के लिए उपयोगी है।