Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie kann ich ANDs und ORs in meiner SQL-Anweisung kombinieren?

Beides wäre gültig, aber da AND hat Vorrang vor OR , sie würden verschiedene Dinge bedeuten:

  • Ihre erste Abfrage in Klammern würde gelöschte Zeilen mit den Typen 3, 4, 5 auswählen
  • Ihre zweite Abfrage in Klammern würde alle Zeilen mit den Typen 3, 5 auswählen, zusätzlich zu den gelöschten Zeilen des Typs 4; dies ist die gleiche Bedeutung wie in der ursprünglichen Abfrage ohne Klammern.

Sie können die Verwirrung vollständig vermeiden, indem Sie den Operator IN verwenden , etwa so:

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

oder wenn Sie die zweite Bedeutung wollten

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