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.
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:
IN
. Giá trị có thể là một cột hoặc một biểu thức.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).
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.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);
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.
IN
để kiểm tra xem một giá trị có nằm trong một bộ giá trị hay không.IN
để tạo điều kiện cho mệnh đề WHERE
.Bài viết liên quan:
Các bạn có thể xem thêm ở đây: https://www.mysqltutorial.org/mysql-basics/mysql-in/
Bình luận: