Il y a priorité avec des opérateurs logiques. En cas de doute, utilisez des parenthèses.
Dans votre cas :
SELECT * FROM database WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200
Votre requête d'origine a été interprétée comme suit car le AND
a une priorité plus élevée.
SELECT * FROM database WHERE name = var1 OR name = var2 OR (name = var3 AND id < 200)
Mettre à jour
Comme commenté par Rocket , vous pouvez condenser votre OR
déclarations à IN
puisqu'ils opèrent sur le même terrain. Cela supprimerait le besoin de parenthèses.
SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200
Néanmoins, il est important de comprendre la différence entre les deux requêtes d'origine, car vous écrirez inévitablement des requêtes avec plusieurs conditions.