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ử ANY là TRUE 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ử ALL là TRUE 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 |