Beide zouden geldig zijn, maar sinds AND
heeft een hogere prioriteit dan OR
, zouden ze verschillende dingen betekenen:
- Uw eerste zoekopdracht tussen haakjes zou verwijderde rijen kiezen met de typen 3, 4, 5
- Uw tweede zoekopdracht tussen haakjes zou alle rijen met type 3, 5 selecteren, naast verwijderde rijen van type 4; dit is dezelfde betekenis als in de oorspronkelijke zoekopdracht zonder haakjes.
U kunt de verwarring helemaal voorkomen door de operator IN
. te gebruiken , zoals dit:
SELECT * FROM `table` WHERE type IN (3, 4, 5) AND table.deleted = 1;
of als je de tweede betekenis wilde
SELECT * FROM `table` WHERE type IN (3, 5) OR (type = 4 AND table.deleted = 1)