Begge disse ville være gyldige, men siden AND
har højere forrang end OR
, ville de betyde forskellige ting:
- Din første forespørgsel i parentes vil vælge slettede rækker med type 3, 4, 5
- Din anden forespørgsel i parentes vil vælge alle rækker med type 3, 5, foruden slettede rækker af type 4; dette er den samme betydning som i den oprindelige forespørgsel uden parentes.
Du kan undgå forvirringen helt ved at bruge operatoren IN
, sådan her:
SELECT * FROM `table` WHERE type IN (3, 4, 5) AND table.deleted = 1;
eller hvis du ville have den anden betydning
SELECT * FROM `table` WHERE type IN (3, 5) OR (type = 4 AND table.deleted = 1)