Trong bài viết này, bạn sẽ học được cách sử dụng toán tử MySQL IN để 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.
Giới thiệu về toán tử MySQL IN
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ị bằng 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:
- Đầu tiên, chỉ định giá trị để kiểm tra ở phía bên trái của toán tử
IN
. Giá trị có thể là một cột hoặc một biểu thức. - Thứ hai, chỉ định danh sách các giá trị được phân tách bằng dấu phẩy để khớp trong dấu ngoặc đơn.
Toán tử IN
có chức năng tương đươ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);
kết quả:
+--------------+ | 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);
Kết quả:
+--------------+ | 4 IN (1,2,3) | +--------------+ | 0 | +--------------+ 1 row in set (0.00 sec)
Trên 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 subquery (truy vấn con).
Toán tử MySQL IN và NULL
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ử là NULL.- Giá trị 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);
kết quả:
+-----------------+ | 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 NULL:
SELECT 0 IN (1 , 2, 3, NULL);
Kết quả:
+-----------------------+ | 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);
Ví dụ về toán tử MySQL IN
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');
Kết quả:
+------------+---------------+-----------------+---------+ | 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 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.
Tổng kết
- Có thể sử dụng toán tử
IN
để kiểm tra xem một giá trị có nằm trong một bộ giá trị hay không. - Sử dụng toán tử
IN
để tạo điều kiện cho mệnh đềWHERE
.
Bài viết liên quan:
- Seri MySQL cơ bản
- Câu lệnh SELECT FROM trong MySQL
- MySQL SELECT
- MySQL AND, Cách Sử Dụng Toán Tử AND Trong MySQL / Mariadb
- Sử dụng OR trong Mysql / Mariadb như thế nào?
Các bạn có thể xem thêm ở đây: https://www.mysqltutorial.org/mysql-basics/mysql-in/