Bài MySQL 17: Toán tử IN trong MySQL

0
122

Xin chào các bạn, trong bài học ngày hôm nay mình sẽ hướng dẫn các bạn 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 một danh sách hoặc một truy vấn phụ hay không. Sau đây là nội dung chi tiết.

Giới thiệu

Toán tử IN cho phép bạn xác định xem một giá trị được chỉ định có khớp với bất kỳ giá trị nào trong một tập hợp các giá trị hoặc được truy vấn con trả về hay không.

Cú pháp của toán tử IN:

Trong đó:

  • Bạn có thể sử dụng một cột hoặc một biểu thức (expr) với toán tử IN trong câu lệnh WHERE.
  • Các giá trị trong danh sách được phân tách bằng dấu phẩy (,).
  • Toán tử IN cũng có thể được sử dụng trong các câu lệnh khác như UPDATE hay DELETE.

Toán tử IN trả về 1 nếu giá trị của column_1 hoặc kết quả của biểu thức expr bằng với bất kỳ giá trị nào trong danh sách, nếu không, nó sẽ trả về 0.

Khi các giá trị trong danh sách đều là hằng số, MySQL thực hiện các bước sau:

  • Đầu tiên, đánh giá các giá trị dựa trên loại dữ liệu của column_1 hoặc kết quả của biểu thức expr.
  • Thứ hai, sắp xếp các giá trị.
  • Thứ ba, tìm kiếm giá trị bằng thuật toán tìm kiếm nhị phân. Do đó, một truy vấn mà sử dụng toán tử IN với một danh sách các hằng số sẽ thực hiện nhanh.

Lưu ý: nếu giá trị expr hoặc bất kỳ giá trị trong danh sách là NULL, toán tử IN sẽ trả về NULL.

Bạn có thể kết hợp toán tử IN với toán tử NOT để xác định xem một giá trị có khớp với bất kỳ giá trị nào trong danh sách hoặc truy vấn phụ hay không.

Ví dụ toán tử IN trong MySQL

Đầu tiên mình sẽ tạo một bảng offices trong cơ sở dữ liệu:

Nếu bạn muốn tìm các văn phòng đặt tại Việt Nam và Thái Lan, bạn có thể sử dụng toán tử IN trong câu truy vấn như sau:

kết quả trả về là:

Bạn có thể có được kết quả tương tự với toán tử OR như sau:

Trong trường hợp danh sách có nhiều giá trị thì bạn sẽ 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.

Kết luận

Như vậy trong bài học ngày hôm nay mình đã hướng dẫn các bạn sử dụng toán tử 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 một danh sách hoặc một truy vấn phụ hay không. Trong bài học tiếp theo chúng ta sẽ tìm hiểu về toán tử BETWEEN trong MySQL.

Chúc các bạn học tập tốt!

BÌNH LUẬN

Vui lòng nhập bình luận của bạn
Vui lòng nhập tên của bạn ở đây