1. Toán tử EXISTS

Toán tử EXISTS được sử dụng để kiểm tra sự tồn tại của một bản ghi nào đó trong câu truy vấn. Nếu việc kiểm tra bằng toán tử EXIST được trả về TRUE thì nghĩa là bản ghi đó sẽ không tồn tại và ngược lại nếu toán tử EXISTFALSE thì sẽ trả về bản ghi tồn tại.

Cú pháp của toán tử EXIST như sau:

SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name FROM table_name WHERE condition);

Trong đó:

  • SELECT column_name(s) là câu lệnh chọn các cột
  • FROM table_name là chọn từ bảng chứa các cột cần chọn
  • WHERE EXISTS là điều kiện kiểm tra sự tồn tại cho một bản ghi
  • (SELECT column_name FROM table_name WHERE condition) là câu lệnh truy vấn để chọn ra phạm vi cho toán tử EXISTS kiểm tra sự tồn tại

Chú ý: Toán tử EXISTS có thể dùng trong các câu lệnh như SELECT, INSERT, UPDATE hoặc DELETE.

2. Ví dụ toán tử EXISTS

Bảng dưới đây có tên là SanPham bao gồm các cột như sau: MaSP, TenSP, MaNCC, GiaSP

MaSP TenSP MaNCC GiaSp
1 San Pham A 3 10.5
2 San Pham B 1 8
3 San Pham C 3 25.3
4 San Pham D 4 11.2
5 San Pham E 2 60

Bảng tiếp theo dưới đây có tên NhaCungCap bao gồm các cột như sau: MaNCC, TenNCC, DiaChi, ThanhPho

MaNCC TenNCC DiaChi ThanhPho
1 Nha Cung Cap A Tu Son Bac Ninh
2 Nha Cung Cap B Thanh Thuy Phu Tho
3 Nha Cung Cap C Son Tay Ha Noi
4 Nha Cung Cap D Nghi Son Thanh Hoa

Câu lệnh SQL sau sẽ sử dụng câu lệnh SELECT và toán tử EXIST để lấy ra tên những nhà cung cấp (TenNCC) có những sản phẩm tồn tại giá nhỏ hơn 20

SELECT TenNCC
FROM NhaCungCap
WHERE EXISTS (SELECT TenSP FROM SanPham WHERE SanPham.MaNCC = NhaCungCap.MaNCC AND SanPham.GiaSP < 20);

Kết quả:

TenNCC
Nha Cung Cap A
Nha Cung Cap C
Nha Cung Cap D

Câu lệnh SQL sau sẽ lấy ra tên những nhà cung cấp (TenNCC) có những sản phẩm tồn tại giá bằng 60

SELECT TenNCC 
FROM NhaCungCap 
WHERE EXISTS (SELECT TenSP FROM SanPham WHERE SanPham.MaNCC = NhaCungCap.MaNCC AND SanPham.GiaSP = 60);

Kết quả:

TenNCC
Nha Cung Cap B