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)