Code Tu Tam

MySQL AND, Cách Sử Dụng Toán Tử AND Trong MySQL / Mariadb

Rate this post

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,  UPDATEDELETE  để 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

Bài viết liên quan:

Các bạn có thể xem thêm ở đây: https://www.mysqltutorial.org/mysql-and/

Exit mobile version