Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử IN
trong MySQL để xác định xem một giá trị được chỉ định có khớp với bất kỳ giá trị nào trong danh sách các giá trị hay không.
Toán tử IN
cho phép bạn xác định xem một giá trị có khớp với bất kỳ giá trị nào trong danh sách các giá trị hay không. Đây là cú pháp của toán tử IN
:
value IN (value1, value2, value3,...)
Toán tử IN
trả về 1 (true) nếu giá trị của value
bằng với bất kỳ giá trị nào trong danh sách (value1
, value2
, value3
, …). Nếu không, nó trả về 0.
Trong cú pháp này:
IN
. Giá trị có thể là một cột hoặc một biểu thức.Toán tử IN
tương đương về mặt chức năng với sự kết hợp của nhiều toán tử OR
:
value = value1 OR value = value2 OR value = value3 OR ...
Ví dụ sau trả về 1 vì 1 có trong danh sách:
SELECT 1 IN (1,2,3);
Đầu ra:
+--------------+
| 1 IN (1,2,3) |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
Ví dụ sau trả về 0 vì 4 không có trong danh sách:
SELECT 4 IN (1,2,3);
Đầu ra:
+--------------+
| 4 IN (1,2,3) |
+--------------+
| 0 |
+--------------+
1 row in set (0.00 sec)
Trong thực tế, bạn sẽ sử dụng toán tử IN
để tạo điều kiện trong mệnh đề WHERE
của câu lệnh SELECT
, DELETE
và UPDATE
. Ngoài ra, bạn sẽ sử dụng toán tử IN
trong một truy vấn có chứa một truy vấn con.
Nói chung, toán tử IN
trả về NULL
trong hai trường hợp:
value
bên trái của toán tử IN
là NULL.value
không bằng bất kỳ giá trị nào trong danh sách và một trong các giá trị trong danh sách là NULL.Ví dụ sau trả về NULL vì giá trị bên trái của toán tử IN là NULL:
SELECT NULL IN (1,2,3);
Đầu ra:
+-----------------+
| NULL IN (1,2,3) |
+-----------------+
| NULL |
+-----------------+
1 row in set (0.00 sec)
Ví dụ sau cũng trả về NULL vì giá trị 0 không bằng bất kỳ giá trị nào trong danh sách và danh sách có một giá trị NULL:
SELECT 0 IN (1 , 2, 3, NULL);
Đầu ra:
+-----------------------+
| 0 IN (1 , 2, 3, NULL) |
+-----------------------+
| NULL |
+-----------------------+
1 row in set (0.00 sec)
Ví dụ sau cũng trả về NULL vì NULL không bằng bất kỳ giá trị nào trong danh sách và danh sách có một NULL.
Lưu ý rằng NULL không bằng NULL.
SELECT NULL IN (1 , 2, 3, NULL);
Xem bảng offices
sau từ cơ sở dữ liệu mẫu:
Ví dụ sau sử dụng toán tử IN
để tìm các văn phòng đặt tại Hoa Kỳ và Pháp:
SELECT
officeCode,
city,
phone,
country
FROM
offices
WHERE
country IN ('USA' , 'France');
Đầu ra:
+------------+---------------+-----------------+---------+
| officeCode | city | phone | country |
+------------+---------------+-----------------+---------+
| 1 | San Francisco | +1 650 219 4782 | USA |
| 2 | Boston | +1 215 837 0825 | USA |
| 3 | NYC | +1 212 555 3000 | USA |
| 4 | Paris | +33 14 723 4404 | France |
+------------+---------------+-----------------+---------+
4 rows in set (0.01 sec)
Bạn cũng có thể nhận được kết quả tương tự với toán tử OR
như sau:
SELECT
officeCode,
city,
phone
FROM
offices
WHERE
country = 'USA' OR country = 'France';
Trong trường hợp danh sách có nhiều giá trị, bạn cần phải xây dựng một câu lệnh rất dài với nhiều toán tử OR
. Do đó, toán tử IN
cho phép bạn rút ngắn truy vấn và làm cho nó dễ đọc hơn.
Toán tử NOT
phủ định toán tử IN
:
value NOT IN (value1, value2, value2)
Toán tử NOT IN
trả về 1 (true) nếu giá trị không bằng bất kỳ giá trị nào trong danh sách. Nếu không, nó trả về 0 (false).
Ví dụ sau sử dụng toán tử NOT IN
để kiểm tra xem số 1 có phải là không nằm trong danh sách (1,2,3) không:
SELECT 1 NOT IN (1,2,3);
Đầu ra:
+------------------+
| 1 NOT IN (1,2,3) |
+------------------+
| 0 |
+------------------+
1 row in set (0.00 sec)
Nó trả về 0 (false) vì 1 nằm trong danh sách.
Ví dụ sau sử dụng toán tử NOT IN
để kiểm tra xem 0 có phải là không nằm trong danh sách (1,2,3) không:
SELECT 0 NOT IN (1,2,3);
Đầu ra:
+------------------+
| 0 NOT IN (1,2,3) |
+------------------+
| 1 |
+------------------+
1 row in set (0.00 sec)
Toán tử NOT IN
trả về NULL nếu giá trị ở bên trái của toán tử IN
là NULL. Ví dụ:
SELECT NULL NOT IN (1,2,3);
Đầu ra:
+---------------------+
| NULL NOT IN (1,2,3) |
+---------------------+
| NULL |
+---------------------+
1 row in set (0.00 sec)
Về mặt kỹ thuật, toán tử NOT IN
tương đương như sau:
NOT (value = value1 OR value = value2 OR value = valu3)
Hoặc:
value <> value1 AND value <> value2 AND value <> value3
Chúng ta sẽ sử dụng bảng offices
từ cơ sở dữ liệu mẫu để minh họa toán tử NOT IN
:
Ví dụ sau sử dụng toán tử NOT IN
để tìm các văn phòng không đặt tại France
và USA
:
SELECT
officeCode,
city,
phone
FROM
offices
WHERE
country NOT IN ('USA' , 'France')
ORDER BY
city;
Đầu ra:
+------------+--------+------------------+
| officeCode | city | phone |
+------------+--------+------------------+
| 7 | London | +44 20 7877 2041 |
| 6 | Sydney | +61 2 9264 2451 |
| 5 | Tokyo | +81 33 224 5000 |
+------------+--------+------------------+
3 rows in set (0.02 sec)
IN
để kiểm tra xem một giá trị có nằm trong tập hợp các giá trị hay không.IN
để tạo điều kiện cho mệnh đề WHERE
.NOT IN
trong MySQL để kiểm tra xem một giá trị không khớp với bất kỳ giá trị nào trong danh sách.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.