これらは両方とも有効ですが、AND
以降、 OR
よりも優先度が高い
、それらは異なることを意味します:
- 最初の括弧で囲まれたクエリは、タイプ3、4、5の削除された行を選択します
- 2番目の括弧で囲まれたクエリは、タイプ4の削除された行に加えて、タイプ3、5のすべての行を選択します。これは、括弧なしの元のクエリと同じ意味です。
演算子IN
を使用すると、混乱を完全に回避できます。 、このように:
SELECT * FROM `table` WHERE type IN (3, 4, 5) AND table.deleted = 1;
または、2番目の意味が必要な場合
SELECT * FROM `table` WHERE type IN (3, 5) OR (type = 4 AND table.deleted = 1)