EXISTS ऑपरेटर सबक्वेरी के परिणाम सेट में पंक्तियों के अस्तित्व की जांच करता है। यदि सबक्वेरी कोई पंक्ति लौटाती है तो EXISTS TRUE होता है, अन्यथा FALSE। NOT EXISTS इसका विपरीत करता है।
उदाहरण टेबल्स:
-- Cars टेबल
+------+--------------+---------+
| ID | Name | Price |
+------+--------------+---------+
| 1 | Nexa | 750000 |
| 2 | Maruti Swift | 450000 |
| 3 | BMW | 4450000 |
| 4 | VOLVO | 2250000 |
| 5 | Alto | 250000 |
| 6 | Skoda | 1250000 |
| 7 | Toyota | 2400000 |
| 8 | Ford | 1100000 |
+------+--------------+---------+
-- 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 Customers.customer_id = Reservations.customer_id);
+---------+
| Name |
+---------+
| Rahul |
| Yashpal |
| Gaurav |
+---------+
NOT EXISTS सबक्वेरी - जिन्होंने बुकिंग नहीं की:
mysql> Select Name from customers
-> WHERE NOT EXISTS (SELECT * FROM Reservations
-> WHERE Customers.customer_id = Reservations.customer_id);
+----------+
| Name |
+----------+
| Virender |
+----------+
मुख्य अंतर: IN ऑपरेटर की तुलना में EXISTS बड़े डेटासेट पर अक्सर तेज होता है क्योंकि यह पहली मैचिंग पंक्ति मिलते ही रुक जाता है।