MySQL BẤT KỲ và TẤT CẢ các toán tử
MySQL BẤT KỲ và TẤT CẢ các toán tử
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 và một loạt các giá trị khác.
Nhà điều hành BẤT KỲ
Người ANY
điều hành:
- trả về một giá trị boolean là kết quả
- trả về TRUE nếu BẤT KỲ giá trị nào trong số các giá trị truy vấn con đáp ứng điều kiện
ANY
có nghĩa là điều kiện sẽ đúng nếu hoạt động đúng với bất kỳ giá trị nào trong phạm vi.
BẤT KỲ Cú pháp nào
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à một toán tử so sánh chuẩn (=, <>,! =,>,> =, <, Hoặc <=).
Nhà điều hành TẤT CẢ
Người ALL
điều hành:
- trả về một giá trị boolean là kết quả
- 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
SELECT
,WHERE
và cácHAVING
câu lệnh
ALL
có nghĩa là điều kiện sẽ chỉ đúng nếu hoạt động đú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;
TẤT CẢ Cú pháp 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à một toán tử so sánh 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 KỲ 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):
Thí dụ
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);
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):
Thí dụ
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99);
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ề FALSE vì cột Số lượng không có giá trị nào lớn hơn 1000):
Thí dụ
SELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000);
SQL TẤT CẢ các ví dụ
Câu lệnh SQL sau liệt kê TẤT CẢ các tên sản phẩm:
Thí dụ
SELECT ALL ProductName
FROM Products
WHERE TRUE;
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ề FALSE vì cột Số lượng có nhiều giá trị khác nhau (không chỉ giá trị của 10):
Thí dụ
SELECT ProductName
FROM Products
WHERE ProductID = ALL
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10);