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

Como posso combinar ANDs e ORs na minha instrução SQL


Ambos seriam válidos, mas desde AND tem precedência maior que OR , eles significariam coisas diferentes:
  • Sua primeira consulta entre parênteses selecionaria linhas excluídas com os tipos 3, 4, 5
  • Sua segunda consulta entre parênteses selecionaria todas as linhas com os tipos 3, 5, além das linhas excluídas do tipo 4; este é o mesmo significado da consulta original sem parênteses.

Você pode evitar a confusão usando o operador IN , assim:
SELECT * FROM `table` WHERE type IN (3, 4, 5) AND table.deleted = 1;

ou se você queria o segundo significado
SELECT * FROM `table` WHERE type IN (3, 5) OR (type = 4 AND table.deleted = 1)