Có ưu tiên với các toán tử logic. Khi nghi ngờ, hãy sử dụng dấu ngoặc đơn.
Trong trường hợp của bạn:
SELECT * FROM database WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200
Truy vấn ban đầu của bạn được hiểu như sau vì AND
có mức độ ưu tiên cao hơn.
SELECT * FROM database WHERE name = var1 OR name = var2 OR (name = var3 AND id < 200)
Cập nhật
Như nhận xét của Rocket , bạn có thể cô đọng OR
của mình câu lệnh cho IN
vì họ hoạt động trên cùng một lĩnh vực. Làm như vậy sẽ loại bỏ sự cần thiết của dấu ngoặc đơn.
SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200
Tuy nhiên, hiểu được sự khác biệt giữa hai truy vấn ban đầu là rất quan trọng vì bạn chắc chắn sẽ viết các truy vấn với nhiều điều kiện.