論理演算子の優先順位

1 つのステートメントで複数の論理演算子を使用すると、最初に NOT が評価され、次に AND、最後に OR が評価されます。算術演算子、およびビット演算子は論理演算子より前に処理されます。

次の例では、色の条件が製品モデル 21 には該当しますが、製品モデル 20 には該当しません。これは、AND が OR よりも優先されるためです。

USE AdventureWorks2008R2;
GO
SELECT ProductID, ProductModelID
FROM AdventureWorks2008R2.Production.Product
WHERE ProductModelID = 20 OR ProductModelID = 21
  AND Color = 'Red'

OR が必ず最初に評価されるように、かっこを付け加えることでクエリの意味を変えることができます。次のクエリでは、モデル 20 とモデル 21 で赤色の製品のみが検索されます。

SELECT ProductID, ProductModelID
FROM AdventureWorks2008R2.Production.Product
WHERE (ProductModelID = 20 OR ProductModelID = 21)
  AND Color = 'Red'

必要でない場合でもかっこを使用すると、クエリが読みやすくなり、演算子の優先順位が原因の微妙な間違いを犯す可能性が減少します。かっこを使用することでパフォーマンスが大幅に低下することはありません。次の例は、元の例と構文は同じですが、元の例よりも読みやすくなっています。

SELECT ProductID, ProductModelID
FROM AdventureWorks2008R2.Production.Product
WHERE ProductModelID = 20 OR (ProductModelID = 21
  AND Color = 'Red')