Trong bài viết này, chúng tôi sẽ hướng dẫn sử dụng toán tử AND
của MySQL để kết hợp nhiều điều kiện để lọc dữ liệu.
Giới thiệu về toán tử AND của MySQL
MySQL không tích hợp sẵn kiểu Boolean. Thay vào đó, nó sử dụng số 0 là FALSE và các giá trị khác 0 là TRUE.
Toán tử AND
là một toán tử logic kết hợp hai hoặc nhiều biểu thức Boolean và trả về 1, 0 hoặc NULL:
A AND B
Trong biểu thức này, A và B được gọi là toán hạng. Chúng có thể là các giá trị hoặc biểu thức theo nghĩa đen.
Toán tử logic AND
trả về 1 nếu cả A và B đều khác 0 và không phải NULL. Nó trả về 0 nếu một trong hai toán hạng bằng 0; nếu không, nó trả về NULL.
Toán tử lôgic AND
trả về 1 nếu cả A và B đều khác 0 và KHÔNG ĐỦ. Ví dụ:
SELECT 1 AND 1;
Kết quả:
+---------+ | 1 AND 1 | +---------+ | 1 | +---------+ 1 row in set (0.00 sec)
Toán tử logic AND
trả về 0 nếu A hoặc B bằng 0 hoặc cả A và B bằng 0:
SELECT 1 AND 0, 0 AND 1, 0 AND 0, 0 AND NULL;
Kết quả:
+---------+---------+---------+------------+ | 1 AND 0 | 0 AND 1 | 0 AND 0 | 0 AND NULL | +---------+---------+---------+------------+ | 0 | 0 | 0 | 0 | +---------+---------+---------+------------+ 1 row in set (0.00 sec)
Toán tử logic AND trả về NULL nếu toán hạng khác 0 hoặc cả hai toán hạng đều NULL.
SELECT 1 AND NULL, NULL AND NULL;
Kết quả:
+------------+---------------+ | 1 AND NULL | NULL AND NULL | +------------+---------------+ | NULL | NULL | +------------+---------------+ 1 row in set (0.00 sec)
Bảng sau minh họa kết quả của toán tử AND
khi kết hợp true, false và null.
TRUE | FALSE | NULL | |
---|---|---|---|
TRUE | TRUE | FALSE | NULL |
FALSE | FALSE | FALSE | FALSE |
NULL | NULL | FALSE | NULL |
Trên thực tế, bạn sẽ sử dụng toán tử AND
trong mệnh đề WHERE
của câu lệnh SELECT
, UPDATE
, DELETE
để tạo điều kiện. Ngoài ra, bạn có thể toán tử AND
trong các điều kiện của mệnh đề INNER JOIN
and LEFT JOIN
.
Khi đánh giá một biểu thức có chứa toán tử AND
, 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ả.
Đây được gọi là đánh giá ngắn mạch. Nói cách khác, toán tử AND
bị ngắn mạch. Ví dụ:
SELECT 1 = 0 AND 1 / 0 ;
Kết quả:
+-----------------+ | 1 = 0 AND 1 / 0 | +-----------------+ | 0 | +-----------------+ 1 row in set (0.01 sec)
Trong ví dụ này, MySQL chỉ đánh giá phần đầu tiên 1 = 0
của biểu thức 1 = 0 AND 1 / 0
.
Vì biểu thức 1 = 0 trả về 0 nên MySQL có thể xác định kết quả của toàn bộ biểu thức là 0.
Do đó, MySQL không cần đánh giá phần còn lại của biểu thức, là 1/0; nó sẽ đưa ra lỗi chia cho 0.
Ví dụ về toán tử AND của MySQL
Hãy sử dụng bảng customers
trong cơ sở dữ liệu mẫu để trình diễn.
Câu lệnh sau sử dụng toán tử AND
để tìm khách hàng sống ở California (CA), Hoa Kỳ:
SELECT customername, country, state FROM customers WHERE country = 'USA' AND state = 'CA';
Kết quả:
+------------------------------+---------+-------+ | customername | country | state | +------------------------------+---------+-------+ | Mini Gifts Distributors Ltd. | USA | CA | | Mini Wheels Co. | USA | CA | | Technics Stores Inc. | USA | CA | | Toys4GrownUps.com | USA | CA | | Boards & Toys Co. | USA | CA | | Collectable Mini Designs Co. | USA | CA | | Corporate Gift Ideas Co. | USA | CA | | Men 'R' US Retailers, Ltd. | USA | CA | | The Sharp Gifts Warehouse | USA | CA | | West Coast Collectables Co. | USA | CA | | Signal Collectibles Ltd. | USA | CA | +------------------------------+---------+-------+ 11 rows in set (0.00 sec)
Bằng cách sử dụng toán tử AND
, bạn có thể kết hợp nhiều hơn hai biểu thức Boolean. Ví dụ: truy vấn sau trả về những khách hàng sống ở California, Hoa Kỳ và có hạn mức tín dụng lớn hơn 100K.
SELECT customername, country, state, creditlimit FROM customers WHERE country = 'USA' AND state = 'CA' AND creditlimit > 100000;
Kết quả:
+------------------------------+---------+-------+-------------+ | customername | country | state | creditlimit | +------------------------------+---------+-------+-------------+ | Mini Gifts Distributors Ltd. | USA | CA | 210500.00 | | Collectable Mini Designs Co. | USA | CA | 105000.00 | | Corporate Gift Ideas Co. | USA | CA | 105000.00 | +------------------------------+---------+-------+-------------+ 3 rows in set (0.00 sec)
Tổng kết
- Sử dụng toán tử
AND
để kết hợp hai biểu thức Boolean. Toán tửAND
trả về true khi cả hai biểu thức đều đúng; nếu không, nó trả về false. - Sử dụng toán tử
AND
để tạo điều kiện trong mệnh đềWHERE
của câu lệnhSELECT
.
Bài viết liên quan:
Các bạn có thể xem thêm ở đây: https://www.mysqltutorial.org/mysql-and/