Toán tử EXISTS kiểm tra sự tồn tại của hàng trong tập kết quả của truy vấn con. Nếu tìm thấy hàng, EXISTS trả về TRUE, NOT EXISTS trả về FALSE.
Minh họa với 3 bảng: Cars, Customers, Reservations:
mysql> Select * from 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 | +------+--------------+---------+ mysql> Select * from Customers; +-------------+----------+ | Customer_Id | Name | +-------------+----------+ | 1 | Rahul | | 2 | Yashpal | | 3 | Gaurav | | 4 | Virender | +-------------+----------+ mysql> Select * from 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 | +------+-------------+------------+
Ví dụ EXISTS
mysql> Select Name from customers
WHERE EXISTS (SELECT * FROM Reservations
WHERE Customers.customer_id = Reservations.customer_id);
+---------+
| Name |
+---------+
| Rahul |
| Yashpal |
| Gaurav |
+---------+
3 rows in set (0.06 sec)
Truy vấn trả về tên khách hàng đã đặt chỗ (có bản ghi trong Reservations).
Ví dụ NOT EXISTS
mysql> Select Name from customers
WHERE NOT EXISTS (SELECT * FROM Reservations
WHERE Customers.customer_id = Reservations.customer_id);
+----------+
| Name |
+----------+
| Virender |
+----------+
1 row in set (0.04 sec)
Truy vấn trả về tên khách hàng chưa đặt chỗ nào (không có bản ghi trong Reservations).