Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

MySQL đánh giá EXISTS như thế nào khi subquery không trả về hàng nào?


Nếu subquery dùng với EXISTS không trả về hàng nào, biểu thức EXISTS trả về FALSE và MySQL trả về tập rỗng.

Ví dụ

Dữ liệu bảng Customers, Reservations:

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 |
+------+-------------+------------+

Subquery với EXISTS không trả về hàng (customer_id=4 không có trong Reservations):

mysql> Select Name from Customers 
    WHERE EXISTS (SELECT * FROM Reservations WHERE customer_id = 4);
Empty set (0.00 sec)

EXISTS trả về FALSE → kết quả rỗng. Khác với IN (sẽ trả về NULL).