Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment puis-je combiner AND et OR dans mon instruction SQL

Les deux seraient valides, mais depuis AND a une priorité plus élevée que OR , ils signifieraient différentes choses :

  • Votre première requête entre parenthèses sélectionnerait les lignes supprimées avec les types 3, 4, 5
  • Votre deuxième requête entre parenthèses sélectionnerait toutes les lignes avec les types 3, 5, en plus des lignes supprimées de type 4 ; c'est la même signification que dans la requête d'origine sans parenthèses.

Vous pouvez éviter toute confusion en utilisant l'opérateur IN , comme ceci :

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

ou si vous vouliez le deuxième sens

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