sql >> Base de Datos >  >> RDS >> Mysql

Cómo usar uno o más OR y AND en la consulta mysql

Hay precedencia con operadores lógicos. En caso de duda, utilice paréntesis.

En su caso:

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

Su consulta original se interpretó de la siguiente manera porque AND tiene mayor precedencia.

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

Actualizar

Como comentó Rocket , podría condensar su OR declaraciones a IN ya que operan en el mismo campo. Hacerlo eliminaría la necesidad de paréntesis.

SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200

No obstante, es importante comprender la diferencia entre las dos consultas originales, ya que inevitablemente escribirá consultas con múltiples condiciones.