Toán tử IN
trong MySQL được sử dụng để kiểm tra xem một giá trị có tồn tại trong một danh sách giá trị hoặc trong kết quả của một truy vấn con (subquery) hay không. Cùng unitop tìm hiểu cách sử dụng toán tử IN.
Sử dụng WHERE IN với danh sách giá trị cụ thể
Trong admin của hệ thống website thường có chức năng thao tác đổi trạng thái bài viết sản phẩm với điều kiện id thuộc vào một danh sách các phần tử lựa chọn.
Để tôi lấy một ví dụ:
Tôi có bảng posts dùng lưu danh sách bài viết trong hệ thống, bây giờ tôi muốn cập nhật tất cả các bài viết có id 2, 6, 8 từ trạng thái publish(công khai) thành private(riêng tư).
Để cập nhật tất cả các bài viết có ID 2, 6 và 8 từ trạng thái “publish” thành “private” trong bảng posts
, bạn có thể sử dụng câu lệnh SQL UPDATE
kết hợp với WHERE IN
.
Dưới đây là đoạn code minh họa:
UPDATE posts
SET status = 'private'
WHERE id IN (2, 6, 8);
Trong đoạn mã này:
UPDATE posts
: Đây là câu lệnh cập nhật dữ liệu trong bảngposts
.SET status = 'private'
: Chúng ta đặt trạng thái của các bài viết thành “private”.WHERE id IN (2, 6, 8)
: Điều này xác định rằng chỉ các bài viết có ID là 2, 6 và 8 sẽ bị ảnh hưởng bởi câu lệnh cập nhật.
Sử dụng WHERE IN với sub query
Hãy giả sử bạn đang làm việc với một cửa hàng trực tuyến và bạn có hai bảng dữ liệu quan trọng:
Bảng “categories” (danh mục sản phẩm): Bảng này chứa thông tin về các danh mục sản phẩm. Ví dụ, bạn có các danh mục như ‘Electronics’, ‘Clothing’, ‘Furniture’, và ‘Books’.
+------------+----------------+
| category_id | name |
+------------+----------------+
| 1 | Electronics |
| 2 | Clothing |
| 3 | Furniture |
| 4 | Books |
+------------+----------------+
Bảng “products” (sản phẩm): Bảng này chứa thông tin về các sản phẩm, bao gồm product_id
, product_name
, và category_id
để liên kết với danh mục sản phẩm tương ứng.
+------------+------------------+------------+
| product_id | product_name | category_id |
+------------+------------------+------------+
| 1 | Smartphone | 1 |
| 2 | Laptop | 1 |
| 3 | T-shirt | 2 |
| 4 | Chair | 3 |
| 5 | Novel | 4 |
+------------+------------------+------------+
Bây giờ, giả sử bạn muốn lấy danh sách tất cả các sản phẩm thuộc danh mục ‘Electronics’. Để làm điều này, bạn có thể sử dụng một truy vấn SQL với toán tử WHERE IN
và một truy vấn con (subquery). Dưới đây là ví dụ cụ thể:
SELECT *
FROM products
WHERE category_id IN (SELECT category_id FROM categories WHERE name = 'Electronics');
Giải thích các bước và cách nó hoạt động:
- Trong truy vấn con (subquery) bên trong dấu ngoặc đơn,
SELECT category_id FROM categories WHERE name = 'Electronics'
trước tiên lấycategory_id
từ bảng “categories” nơiname
là ‘Electronics’. Điều này trả về danh mục ID tương ứng, trong trường hợp này, là1
. - Tiếp theo, truy vấn chính là
SELECT * FROM products
, nơi chúng ta muốn lấy tất cả thông tin về sản phẩm từ bảng “products”. - Trong phần
WHERE
, chúng ta sử dụng toán tửIN
để so sánhcategory_id
của các sản phẩm trong bảng “products” với danh sáchcategory_id
thu được từ truy vấn con. Kết quả là các sản phẩm thuộc danh mục ‘Electronics’ sẽ được chọn và hiển thị trong kết quả.
Kết quả của truy vấn sẽ là danh sách tất cả các sản phẩm thuộc danh mục ‘Electronics’.
Tổng kết
Trong bài viết này bạn đã được chia sẻ cách sử dụng toán tử IN trong cấu trúc WHERE IN SQL. Việc của bản ngay bây giờ thực hành cấu trúc này để áp dụng toán tử IN vào quá trình học lập trình php và xây dựng dự án của mình.
*** Nếu bạn đang có ý định học Php Mysql để chuẩn bị cho việc làm, nhưng cảm thấy bối rối và không biết bắt đầu từ đâu hoặc làm thế nào để đáp ứng nhu cầu tuyển dụng và kiếm được thu nhập, thì hãy khám phá chương trình học “PHP Master” tại https://unitop.vn.
Tại đây, bạn sẽ tìm thấy một lộ trình học bài bản và được hỗ trợ, kèm cặp một cách chặt chẽ thông qua một nhóm kín độc quyền đến khi bạn bắt đầu làm việc thực tế với mức thu nhập 8-30tr/tháng.