Båda dessa skulle vara giltiga, men sedan AND
har högre prioritet än OR
, de skulle betyda olika saker:
- Din första fråga inom parentes skulle välja borttagna rader med typerna 3, 4, 5
- Din andra fråga inom parentes skulle välja alla rader med typ 3, 5, förutom raderade rader av typ 4; detta är samma betydelse som i den ursprungliga frågan utan parentes.
Du kan undvika förvirringen helt och hållet genom att använda operatorn IN
, så här:
SELECT * FROM `table` WHERE type IN (3, 4, 5) AND table.deleted = 1;
eller om du ville ha den andra betydelsen
SELECT * FROM `table` WHERE type IN (3, 5) OR (type = 4 AND table.deleted = 1)