Istnieje precedens z operatorami logicznymi. W razie wątpliwości użyj nawiasów.
W Twoim przypadku:
SELECT * FROM database WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200
Twoje pierwotne zapytanie zostało zinterpretowane w następujący sposób, ponieważ AND
ma wyższy priorytet.
SELECT * FROM database WHERE name = var1 OR name = var2 OR (name = var3 AND id < 200)
Aktualizacja
Zgodnie z komentarzem Rocketa , możesz skondensować swój OR
oświadczenia dla IN
ponieważ działają na tym samym polu. Spowoduje to usunięcie potrzeby stosowania nawiasów.
SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200
Niemniej jednak zrozumienie różnicy między dwoma pierwotnymi zapytaniami jest ważne, ponieważ nieuchronnie będziesz pisać zapytania z wieloma warunkami.