Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como usar um ou mais OR e AND na consulta mysql


precedência com operadores lógicos. Na dúvida, use parênteses.

No seu caso:
SELECT * FROM database WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200

Sua consulta original foi interpretada da seguinte maneira porque o AND tem maior precedência.
SELECT * FROM database WHERE name = var1 OR name = var2 OR (name = var3 AND id < 200)

Atualizar


Conforme comentado por Rocket , você pode condensar seu OR declarações para IN uma vez que operam no mesmo campo. Isso eliminaria a necessidade de parênteses.
SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200

No entanto, é importante entender a diferença entre as duas consultas originais, pois você inevitavelmente escreverá consultas com várias condições.