यदि EXISTS ऑपरेटर के साथ उपयोग की गई सबक्वेरी कोई पंक्ति नहीं लौटाती (0 rows), तो EXISTS एक्सप्रेशन FALSE होता है और MySQL खाली सेट (Empty set) लौटाता है।
उदाहरण टेबल्स:
-- Customers
+-------------+----------+
| Customer_Id | Name |
+-------------+----------+
| 1 | Rahul |
| 2 | Yashpal |
| 3 | Gaurav |
| 4 | Virender |
+-------------+----------+
-- Reservations
+------+-------------+------------+
| ID | Customer_id | Day |
+------+-------------+------------+
| 1 | 1 | 2017-12-30 |
| 2 | 2 | 2017-12-28 |
| 3 | 2 | 2017-12-29 |
| 4 | 1 | 2017-12-25 |
| 5 | 3 | 2017-12-26 |
+------+-------------+------------+
कोई पंक्ति न लौटाने वाली EXISTS सबक्वेरी:
mysql> Select Name from Customers
-> WHERE EXISTS (SELECT * FROM Reservations WHERE customer_id = 4);
Empty set (0.00 sec)
व्याख्या:
- सबक्वेरी:
SELECT * FROM Reservations WHERE customer_id = 4 customer_id = 4(Virender) की कोई बुकिंग नहीं है- सबक्वेरी 0 पंक्तियां लौटाती है
EXISTS→ FALSE- बाहरी क्वेरी कोई पंक्ति नहीं लौटाती →
Empty set
तुलना:
-- EXISTS (सबक्वेरी 0 पंक्ति) → FALSE → कोई परिणाम नहीं
WHERE EXISTS (subquery_returning_zero_rows)
-- NOT EXISTS (सबक्वेरी 0 पंक्ति) → TRUE → सभी बाहरी पंक्तियां
WHERE NOT EXISTS (subquery_returning_zero_rows)
यही कारण है कि "बुकिंग न करने वाले ग्राहक" खोजने के लिए NOT EXISTS उपयोग किया जाता है।