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

¿Cómo puedo combinar AND y OR en mi declaración SQL?

Ambos serían válidos, pero desde AND tiene mayor precedencia que OR , significarían cosas diferentes:

  • Su primera consulta entre paréntesis elegiría filas eliminadas con los tipos 3, 4, 5
  • Su segunda consulta entre paréntesis seleccionaría todas las filas con los tipos 3, 5, además de las filas eliminadas del tipo 4; este es el mismo significado que en la consulta original sin paréntesis.

Puede evitar la confusión por completo utilizando el operador IN , así:

SELECT * FROM `table` WHERE type IN (3, 4, 5) AND table.deleted = 1;

o si quisieras el segundo significado

SELECT * FROM `table` WHERE type IN (3, 5) OR (type = 4 AND table.deleted = 1)