1. Toán tử ANY

Toán tử ANY là toán tử trả về một giá trị kết quả là Boolean, nếu như kết quả trả về của toán tử ANYTRUE thì đồng nghĩa với việc có bất kỳ giá trị nào trong số các giá trị trong câu truy vấn con đáp ứng điều kiện.Ta cũng có thể hiểu toán tử ANY có nghĩa là điều kiện sẽ đúng nếu tìm ra các giá trị trùng với bất kỳ giá trị nào trong phạm vi.

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

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
  (SELECT column_name
  FROM table_name
  WHERE condition);

2.Toán tử ALL

Toán tử ALL cũng được trả về một kết quả là Boolean, kết quả trả về của toán tử ALLTRUE thì đồng nghĩa với tất cả các giá trị trong số các giá trị trong câu truy vấn con là đáp ứng điều kiện. Có thể hiểu toán tử ALL là điều kiện sẽ đúng nếu như tất cả giá trị cần kiểm tra.trùng với các giá trị  trong phạm vi trong câu truy vấn con.

Cú pháp của toán tử ALL với mệnh đề WHERE hoặc HAVING như sau:

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
  (SELECT column_name
  FROM table_name
  WHERE condition);

Cú pháp của toán tử ALL với câu lệnh SELECT như sau:

SELECT ALL column_name(s)
FROM table_name
WHERE condition;

3. Ví dụ toán tử ANY và ALL

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 có tên là ChiTietDatHang bao gồm các cột như sau: MaCTDH, MaDH, MaSP, SoLuong

MaCTDH MaDH MaSP SoLuong
1 3 5 20
2 2 1 10.5
3 4 5 8
4 2 3 20
5 1 2 18
6 1 4 40
7 1 4 20

3.1 Ví dụ ANY

Câu lệnh SQL sau sẽ chọn ra tên của các sản phẩm (TenSP) nếu nó tìm thấy BẤT KỲ bản ghi nào trong bảng ChiTietDatHang có Số lượng bằng 20 (SoLuong = 20)

SELECT TenSP
FROM SanPham
WHERE MaSP= ANY
  (SELECT MaSP
  FROM ChiTietDatHang
  WHERE SoLuong = 20);

Kết quả:

TenSP
San Pham C
San Pham D
San Pham E

Câu lệnh SQL dưới đây sẽ chọn ra tên của các sản phẩm (TenSP) nếu nó tìm thấy BẤT KỲ bản ghi nào trong bảng ChiTietDatHang có Số lượng nhỏ hơn 20 (SoLuong < 20)

SELECT TenSP 
FROM SanPham 
WHERE MaSP= ANY 
   (SELECT MaSP 
    FROM ChiTietDatHang 
    WHERE SoLuong < 20);

Kết quả:

TenSP
San Pham A
San Pham B
San Pham E

3.2 Ví dụ ALL

Câu lệnh SQL sau liệt kê TẤT CẢ các tên sản phẩm:

SELECT ALL TenSP
FROM SanPham;

Kết quả:

TenSP
San Pham A
San Pham B
San Pham C
San Pham D
San Pham E

Câu lệnh SQL sau liệt kê tên sản phẩm (TenSP) nếu TẤT CẢ các bản ghi trong bảng ChiTietDatHang có số lượng bằng 20 (SoLuong = 20)

SELECT TenSP
FROM SanPham
WHERE MaSP= ALL
  (SELECT MaSP
  FROM ChiTietDatHang
  WHERE SoLuong = 20);

Kết quả:

TenSP
Vì toán tử ALL chỉ thỏa mãn khi tất cả các bản ghi trong ChiTietDatHang phải có số lượng bằng 20, tuy nhiên trong bảng này chỉ có 3 sản phẩm có số lượng bằng 20, như vậy sẽ không thỏa mãn cho toán tử ALL và kết quả trả về là rỗng!