Existuje přednost s logickými operátory. V případě pochybností použijte závorku.
Ve vašem případě:
SELECT * FROM database WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200
Váš původní dotaz byl interpretován následovně, protože AND
má vyšší prioritu.
SELECT * FROM database WHERE name = var1 OR name = var2 OR (name = var3 AND id < 200)
Aktualizovat
Jak komentoval Rocket , můžete zkondenzovat OR
prohlášení na IN
protože působí ve stejném oboru. Tím by se odstranila potřeba závorek.
SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200
Pochopení rozdílu mezi dvěma původními dotazy je nicméně důležité, protože nevyhnutelně budete psát dotazy s více podmínkami.