Sử dụng toán tử Any, All trong SQL

Bài hôm nay mình sẽ hướng dẫn các bạn sử dụng toán tử ANY và ALL trong SQL

Mục Lục:

1. Toán tử ANY

Toán tử ANY được sử dụng với mệnh đề WHERE hoặc HAVING.

Toán tử ANY trả về true nếu bất kỳ giá trị truy vấn phụ nào đáp ứng điều kiện.

Cú pháp:

        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 sử dụng với mệnh đề WHERE hoặc HAVING.

Toán tử ALL trả về true nếu tất cả các giá trị của truy vấn phụ đáp ứng điều kiện.

Cú pháp:

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

3. Ví dụ

Ví dụ: ta có 2 bảng sau

Bảng "Products"

ProductID ProductName SupplierID CategoryID Unit Price
1 Chais 1 1 10 boxes x 20 bags 18
2 Chang 1 1 24 - 12 oz bottles 19
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22
5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35

Bảng "OrderDetails"

OrderDetailID OrderID ProductID Quantity
1 10248 11 12
2 10248 42 10
3 10248 72 5
4 10249 14 9
5 10249 51 40

Ví dụ: Câu lệnh SQL sau trả về TRUE và liệt kê các tên sản phẩm nếu nó tìm thấy bất kỳ bản ghi nào trong bảng OrderDetails có số lượng = 10:

        SELECT ProductName
        FROM Products
        WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
    

Ví dụ: Câu lệnh SQL sau trả về TRUE và liệt kê các tên sản phẩm nếu nó tìm thấy bất kỳ bản ghi nào trong bảng OrderDetails số lượng > 99:

        SELECT ProductName
        FROM Products
        WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 99);
    

Ví dụ: Câu lệnh SQL sau trả về TRUE và liệt kê các tên sản phẩm nếu tất cả các bản ghi trong bảng OrderDetails có số lượng = 10: (Khi sử dụng ALL)

        SELECT ProductName
        FROM Products
        WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);