Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tránh dùng quá nhiều OR trong truy vấn MySQL bằng cách dùng IN()

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.