Obie te opcje byłyby prawidłowe, ale ponieważ AND
ma wyższy priorytet niż OR
, oznaczałyby różne rzeczy:
- Twoje pierwsze zapytanie w nawiasach wskazałoby usunięte wiersze z typami 3, 4, 5
- Twoje drugie zapytanie w nawiasach spowoduje wybranie wszystkich wierszy typu 3, 5, oprócz usuniętych wierszy typu 4; to to samo, co w oryginalnym zapytaniu bez nawiasów.
Możesz całkowicie uniknąć zamieszania, używając operatora IN
, tak:
SELECT * FROM `table` WHERE type IN (3, 4, 5) AND table.deleted = 1;
lub jeśli chciałeś drugie znaczenie
SELECT * FROM `table` WHERE type IN (3, 5) OR (type = 4 AND table.deleted = 1)