MySQL BẤT CỨ và TẤT CẢ các nhà khai thác
Toán tử ANY và ALL của MySQL
Toán tử ANY
và ALL
cho phép bạn thực hiện so sánh giữa một giá trị cột đơn và một phạm vi giá trị khác.
Toán tử BẤT KỲ
Toán tử ANY
:
- kết quả là trả về một giá trị boolean
- trả về TRUE nếu BẤT KỲ giá trị truy vấn phụ nào đáp ứng điều kiện
ANY
có nghĩa là điều kiện sẽ đúng nếu thao tác đúng với bất kỳ giá trị nào trong phạm vi.
MỌI cú pháp
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ANY
(SELECT column_name
FROM table_name
WHERE
condition );
Lưu ý: Toán tử phải là toán tử so sánh tiêu chuẩn (=, <>, !=, >, >=, < hoặc <=).
Toán tử TẤT CẢ
Toán tử ALL
:
- kết quả là trả về một giá trị boolean
- trả về TRUE nếu TẤT CẢ các giá trị truy vấn con đáp ứng điều kiện
- được sử dụng với các câu lệnh
SELECT
,WHERE
vàHAVING
ALL
có nghĩa là điều kiện sẽ chỉ đúng nếu thao tác đúng với tất cả các giá trị trong phạm vi.
TẤT CẢ Cú pháp với CHỌN
SELECT ALL column_name(s)
FROM table_name
WHERE
condition ;
Cú pháp ALL với WHERE hoặc HAVING
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ALL
(SELECT column_name
FROM table_name
WHERE condition );
Lưu ý: Toán tử phải là toán tử so sánh tiêu chuẩn (=, <>, !=, >, >=, < hoặc <=).
Cơ sở dữ liệu demo
Dưới đây là lựa chọn từ bảng "Sản phẩm" trong cơ sở dữ liệu mẫu Northwind:
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 |
6 | Grandma's Boysenberry Spread | 3 | 2 | 12 - 8 oz jars | 25 |
7 | Uncle Bob's Organic Dried Pears | 3 | 7 | 12 - 1 lb pkgs. | 30 |
8 | Northwoods Cranberry Sauce | 3 | 2 | 12 - 12 oz jars | 40 |
9 | Mishi Kobe Niku | 4 | 6 | 18 - 500 g pkgs. | 97 |
Và một lựa chọn từ 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 |
6 | 10250 | 41 | 10 |
7 | 10250 | 51 | 35 |
8 | 10250 | 65 | 15 |
9 | 10251 | 22 | 6 |
10 | 10251 | 57 | 15 |
SQL BẤT CỨ ví dụ nào
Câu lệnh SQL sau liệt kê ProductName nếu nó tìm thấy BẤT KỲ bản ghi nào trong bảng OrderDetails có Số lượng bằng 10 (điều này sẽ trả về TRUE vì cột Số lượng có một số giá trị là 10):
Ví dụ
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);
Hãy tự mình thử »Câu lệnh SQL sau liệt kê ProductName nếu nó tìm thấy BẤT KỲ bản ghi nào trong bảng OrderDetails có Số lượng lớn hơn 99 (điều này sẽ trả về TRUE vì cột Số lượng có một số giá trị lớn hơn 99):
Ví dụ
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99);
Hãy tự mình thử »Câu lệnh SQL sau liệt kê ProductName nếu nó tìm thấy BẤT KỲ bản ghi nào trong bảng OrderDetails có Số lượng lớn hơn 1000 (điều này sẽ trả về SAI vì cột Số lượng không có giá trị nào lớn hơn 1000):
Ví dụ
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000);
Hãy tự mình thử »SQL TẤT CẢ các ví dụ
Câu lệnh SQL sau liệt kê TẤT CẢ tên sản phẩm:
Câu lệnh SQL sau liệt kê ProductName nếu TẤT CẢ các bản ghi trong bảng OrderDetails có Số lượng bằng 10. Điều này tất nhiên sẽ trả về SAI vì cột Số lượng có nhiều giá trị khác nhau (không chỉ giá trị 10):
Ví dụ
SELECT ProductName
FROM Products
WHERE ProductID = ALL
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);
Hãy tự mình thử »