Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử OR
trong MySQL để kết hợp các biểu thức Boolean.
Toán tử OR
trong MySQL là một toán tử logic kết hợp hai biểu thức Boolean.
A OR B
Nếu cả A và B không phải là NULL, toán tử OR trả về 1 (true) nếu A hoặc B khác 0. Ví dụ:
SELECT 1 OR 1, 1 OR 0, 0 OR 1;
Đầu ra:
+--------+--------+--------+
| 1 OR 1 | 1 OR 0 | 0 OR 1 |
+--------+--------+--------+
| 1 | 1 | 1 |
+--------+--------+--------+
1 row in set (0.00 sec)
Nếu cả A và B đều bằng 0 (false), toán tử OR trả về 0 (false). Ví dụ:
SELECT 0 OR 0;
Đầu ra:
+--------+
| 0 OR 0 |
+--------+
| 0 |
+--------+
1 row in set (0.00 sec)
Khi A và / hoặc B là NULL, toán tử OR trả về 1 (true) nếu A hoặc B khác 0. Nếu không, nó trả về NULL. Ví dụ:
SELECT 1 OR NULL, 0 OR NULL, NULL or NULL;
Đầu ra:
+-----------+-----------+--------------+
| 1 OR NULL | 0 OR NULL | NULL or NULL |
+-----------+-----------+--------------+
| 1 | NULL | NULL |
+-----------+-----------+--------------+
1 row in set (0.00 sec)
Bảng sau đây cho thấy kết quả của toán tử OR
khi kết hợp true (khác 0), false (0) và NULL:
TRUE | FALSE | NULL | |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
Giống như toán tử logic AND
, toán tử logic OR
cũng có ngắt mạch. Nói cách khác, MySQL ngừng đánh giá các phần còn lại của biểu thức ngay khi nó có thể xác định kết quả. Ví dụ:
SELECT 1 = 1 OR 1 / 0;
Đầu ra:
+----------------+
| 1 = 1 OR 1 / 0 |
+----------------+
| 1 |
+----------------+
1 row in set (0.00 sec)
Vì biểu thức 1 = 1
luôn trả về 1 nên MySQL sẽ không đánh giá biểu thức 1/0. Và MySQL sẽ gặp lỗi nếu nó xảy ra.
Khi một biểu thức chứa cả toán tử AND
và OR
, MySQL sử dụng ưu tiên toán tử để xác định thứ tự đánh giá của các toán tử. MySQL đánh giá toán tử với mức độ ưu tiên cao hơn được thực hiện trước.
Vì toán tử AND
có quyền ưu tiên cao hơn toán tử OR
, MySQL đánh giá toán tử AND
trước toán tử OR
. Ví dụ:
SELECT 1 OR 0 AND 0;
Đầu ra:
+--------------+
| 1 OR 0 AND 0 |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
Làm thế nào nó hoạt động.
1 OR 0 AND 0 = 1 OR 0 = 1
Để thay đổi thứ tự đánh giá, bạn sử dụng dấu ngoặc đơn. Ví dụ:
SELECT (1 OR 0) AND 0;
Đầu ra:
+----------------+
| (1 OR 0) AND 0 |
+----------------+
| 0 |
+----------------+
1 row in set (0.00 sec)
Làm thế nào nó hoạt động.
(1 OR 0) AND 0 = 1 AND 0 = 0
Chúng ta sẽ sử dụng bảng customers
từ cơ sở dữ liệu mẫu để minh họa.
Truy vấn sau sử dụng toán tử OR
trong mệnh đề WHERE
để chọn tất cả các khách hàng ở Hoa Kỳ hoặc Pháp:
SELECT
customername,
country
FROM
customers
WHERE country = 'USA' OR
country = 'France';
Đầu ra:
+------------------------------+---------+
| customername | country |
+------------------------------+---------+
| Atelier graphique | France |
| Signal Gift Stores | USA |
| La Rochelle Gifts | France |
| Mini Gifts Distributors Ltd. | USA |
| Mini Wheels Co. | USA |
| Land of Toys Inc. | USA |
| Saveley & Henriot, Co. | France |
| Muscle Machine Inc | USA |
| Diecast Classics Inc. | USA |
...
Ví dụ sau đây sử dụng toán tử OR
để chọn khách hàng ở Hoa Kỳ hoặc Pháp và có hạn mức tín dụng lớn hơn 100K.
SELECT
customername,
country,
creditLimit
FROM
customers
WHERE (country = 'USA'
OR country = 'France')
AND creditlimit > 100000;
Đầu ra:
+------------------------------+---------+-------------+
| customername | country | creditLimit |
+------------------------------+---------+-------------+
| La Rochelle Gifts | France | 118200.00 |
| Mini Gifts Distributors Ltd. | USA | 210500.00 |
| Land of Toys Inc. | USA | 114900.00 |
| Saveley & Henriot, Co. | France | 123900.00 |
| Muscle Machine Inc | USA | 138500.00 |
| Diecast Classics Inc. | USA | 100600.00 |
| Collectable Mini Designs Co. | USA | 105000.00 |
| Marta's Replicas Co. | USA | 123700.00 |
| Mini Classics | USA | 102700.00 |
| Corporate Gift Ideas Co. | USA | 105000.00 |
| Online Diecast Creations Co. | USA | 114200.00 |
+------------------------------+---------+-------------+
11 rows in set (0.00 sec)
Lưu ý rằng nếu bạn không sử dụng dấu ngoặc đơn, truy vấn sẽ trả về những khách hàng ở Hoa Kỳ có hạn mức tính dụng bất kỳ hoặc những khách hàng ở Pháp có hạn mức tín dụng lớn hơn 100K.
SELECT
customername,
country,
creditLimit
FROM
customers
WHERE
country = 'USA'
OR country = 'France'
AND creditlimit > 100000;
Đầu ra:
+------------------------------+---------+-------------+
| customername | country | creditLimit |
+------------------------------+---------+-------------+
| Signal Gift Stores | USA | 71800.00 |
| La Rochelle Gifts | France | 118200.00 |
| Mini Gifts Distributors Ltd. | USA | 210500.00 |
| Mini Wheels Co. | USA | 64600.00 |
| Land of Toys Inc. | USA | 114900.00 |
| Saveley & Henriot, Co. | France | 123900.00 |
| Muscle Machine Inc | USA | 138500.00 |
| Diecast Classics Inc. | USA | 100600.00 |
| Technics Stores Inc. | USA | 84600.00 |
| American Souvenirs Inc | USA | 0.00 |
...
OR
kết hợp hai biểu thức Boolean và trả về true khi một trong hai biểu thức là true. Nếu không, nó trả về false.OR
sau toán tử AND
nếu một biểu thức chứa cả hai toán tử AND
và OR
.Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử MySQL IS NULLđể kiểm tra xem một giá trị có NULL hay không.
Trong hướng dẫn này, bạn sẽ học cách sử dụng câu lệnh UPDATE JOIN trong MySQL để thực hiện cập nhật bảng chéo.
Trong hướng dẫn này, bạn sẽ học cách sử dụng mệnh đề LIMIT trong MySQL để hạn chế số hàng được trả về bởi một truy vấn.
Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử LIKE trong MySQL để truy vấn dữ liệu dựa trên một mẫu được chỉ định.