Vấn đề
Khi cần lọc nhiều giá trị rời rạc trên cùng một cột, viết nhiều điều kiện OR làm câu truy vấn dài và khó đọc.
1. Tạo bảng
mysql> create table DemoTable (
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(40)
);
Query OK, 0 rows affected (0.89 sec)
2. Chèn dữ liệu
mysql> insert into DemoTable(Name) values('Chris');
mysql> insert into DemoTable(Name) values('Robert');
mysql> insert into DemoTable(Name) values('Mike');
mysql> insert into DemoTable(Name) values('Sam');
mysql> insert into DemoTable(Name) values('David');
3. Xem dữ liệu
mysql> select * from DemoTable;
+----+--------+ | Id | Name | +----+--------+ | 1 | Chris | | 2 | Robert | | 3 | Mike | | 4 | Sam | | 5 | David | +----+--------+ 5 rows in set (0.00 sec)
4. Thay OR bằng IN()
Thay vì WHERE Id = 1 OR Id = 3 OR Id = 5, dùng:
mysql> select * from DemoTable where Id IN(1,3,5);
Kết quả:
+----+-------+ | Id | Name | +----+-------+ | 1 | Chris | | 3 | Mike | | 5 | David | +----+-------+ 3 rows in set (0.00 sec)
Ưu điểm: Ngắn gọn, dễ đọc, tối ưu hóa tốt hơn bởi bộ tối ưu hóa truy vấn.