– Trong hệ quản trị cơ sở dữ liệu MySQL, lệnh EXISTS được dùng để kiểm tra một lệnh truy vấn con, nếu lệnh truy vấn con trả về ít nhất một hàng (bản ghi) thì lệnh EXISTS sẽ trả về giá trị TRUE, còn nếu không thì lệnh EXISTS sẽ trả về giá trị FALSE.
– Trong bài học này, tôi sẽ sử dụng ba cái bảng Customers, Orders, Products lần lượt như bên dưới để làm một số ví dụ minh họa.
CustomerID | CustomerName | City |
1 | Nguyễn Thành Nhân | Cần Thơ |
2 | Huỳnh Văn Thiên | Vĩnh Long |
3 | Doãn Quốc Thiên Thanh | Sóc Trăng |
4 | Trần Duy Hưng | Bạc Liêu |
5 | Lê Thị Anh Thư | Hậu Giang |
ProductID | ProductName | Price |
1 | Mì hảo hảo sa tế hành | 4500 |
2 | Kem đánh răng PS muối | 22000 |
OrderID | OrderDate | CustomerID | Total |
1 | 2019-02-07 | 1 | 180000 |
2 | 2019-02-18 | 4 | 140000 |
3 | 2019-03-11 | 5 | 280000 |
4 | 2019-04-22 | 2 | 235000 |
5 | 2019-06-13 | 3 | 220000 |
6 | 2019-07-25 | 1 | 165000 |
7 | 2019-09-10 | 3 | 350000 |
8 | 2019-09-30 | 5 | 115000 |
SELECT *
FROM Customers
WHERE EXISTS (SELECT * FROM Products WHERE Price = 35000);
– Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như sau:
CustomerID | CustomerName | City |
SELECT *
FROM Customers
WHERE EXISTS (SELECT * FROM Products WHERE Price = 22000);
– Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như sau:
CustomerID | CustomerName | City |
1 | Nguyễn Thành Nhân | Cần Thơ |
2 | Huỳnh Văn Thiên | Vĩnh Long |
3 | Doãn Quốc Thiên Thanh | Sóc Trăng |
4 | Trần Duy Hưng | Bạc Liêu |
5 | Lê Thị Anh Thư | Hậu Giang |
– Liệt kê những khách hàng đã có ít nhất một lần thanh toán hóa đơn trên 200.000đ
SELECT *
FROM Customers
WHERE EXISTS
(SELECT * FROM Orders WHERE (Orders.CustomerID = Customers.CustomerID) AND (Total > 200000));
– Sau khi thực thi câu lệnh phía trên thì tôi sẽ lấy được một bảng dữ liệu như sau:
CustomerID | CustomerName | City |
2 | Huỳnh Văn Thiên | Vĩnh Long |
3 | Doãn Quốc Thiên Thanh | Sóc Trăng |
5 | Lê Thị Anh Thư | Hậu Giang |