Bài này cafedev chia sẻ cho ace về cách sử dụng Toán tử IN, Between trong SQL để lấy ra dữ liệu theo ý muốn của mình.

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

1. Toán tử IN vs NOT IN

Toán tử IN cho phép bạn chỉ định nhiều giá trị trong mệnh đề WHERE.

Toán tử IN là cách viết tắt của nhiều điều kiện OR.

Cú pháp:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1, value2, ...); 

or

SELECT column_name(s)
FROM table_name
WHERE column_name IN (SELECT STATEMENT); 

Trong cú pháp trên có SELECT STATEMENT, đây là một câu truy vấn nào đó để lấy ra 1 or nhiều giá trị cho toán tử IN.

Ví dụ:

  • Câu lệnh SQL sau đây chọn tất cả khách hàng ở “VN”, “US” hoặc “UK”:
SELECT * FROM Customers
WHERE Country IN ('VN', 'US', 'UK');
  • Câu lệnh SQL sau chọn tất cả khách hàng KHÔNG ở “VN”, “US” hoặc “UK”:
SELECT * FROM Customers
WHERE Country NOT IN ('VN', 'US', 'UK');
  • Câu lệnh SQL sau đây chọn tất cả khách hàng đến từ các quốc gia giống như nhà cung cấp:
SELECT * FROM Customers
WHERE Country IN (SELECT Country FROM Suppliers);

2. Toán tử Between, NOT BETWEEN

Toán tử BETWEEN chọn các giá trị trong một phạm vi nhất định. Các giá trị có thể là số, văn bản hoặc ngày tháng.

Toán tử BETWEEN được bao gồm: giá trị bắt đầu và kết thúc được bao gồm.

Cú pháp:

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT column_name(s)
FROM table_name
WHERE column_name BETWEEN value1 AND value2; 

Ví dụ:

  • Câu lệnh SQL sau đây chọn tất cả các sản phẩm có giá GIỮA 10 và 20:
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20;
  • Để hiển thị các sản phẩm nằm ngoài phạm vi của ví dụ trước, hãy sử dụng KHÔNG GIỮA:
/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT * FROM Products
WHERE Price NOT BETWEEN 10 AND 20;
  • Câu lệnh SQL sau đây chọn tất cả các sản phẩm có giá GIỮA 10 và 20. Ngoài ra; không hiển thị các sản phẩm có CategoryID là 1,2 hoặc 3:
SELECT * FROM Products
WHERE Price BETWEEN 10 AND 20
AND CategoryID NOT IN (1,2,3);
  • Câu lệnh SQL sau đây chọn tất cả các sản phẩm có Tên sản phẩm GIỮA Bia và Rượi:
SELECT * FROM Products
WHERE ProductName BETWEEN 'Bia' AND 'Rượi'
ORDER BY ProductName;

NOT BETWEEN Text

  • Câu lệnh SQL sau đây chọn tất cả các sản phẩm có Tên sản phẩm KHÔNG GIỮA Bia và Rượi:
SELECT * FROM Products
WHERE ProductName NOT BETWEEN 'Bia' AND 'Rượi'
ORDER BY ProductName;

BETWEEN Dates

  • Câu lệnh SQL sau đây chọn tất cả các đơn hàng có Ngày đặt hàng GIỮA ’01 -July-1996 ‘và ’31 -July-1996’:
SELECT * FROM Orders
WHERE OrderDate BETWEEN #01/07/1996# AND #31/07/1996#;

or

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

Full series tự học SQL từ cơ bản tới nâng cao tại đây nha.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!