Obojí by bylo platné, ale protože AND
má vyšší prioritu než OR
, znamenaly by různé věci:
- Váš první dotaz v závorkách by vybral smazané řádky s typy 3, 4, 5
- Váš druhý dotaz v závorkách by kromě smazaných řádků typu 4 vybral všechny řádky s typy 3, 5; to je stejný význam jako v původním dotazu bez závorek.
Zmatku se můžete úplně vyhnout použitím operátoru IN
, takto:
SELECT * FROM `table` WHERE type IN (3, 4, 5) AND table.deleted = 1;
nebo chcete-li druhý význam
SELECT * FROM `table` WHERE type IN (3, 5) OR (type = 4 AND table.deleted = 1)