Cách sử dụng IN trong MySQL / Mariadb

30/08/2022 - lượt xem
Chia sẻ
 
4.7/5 - (3 bình chọn)

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  SELECTDELETE,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:

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

    Liên hệ với chúng tôi

    Để lại thông tin để nhận được các bài viết khác

    4.7/5 - (3 bình chọn)

    Xem thêm nhiều bài tin mới nhất về Kiến thức

    Xem thêm