MySQLのWHERE句のAND、ORを利用した複数条件の出力結果ついて改めて整理

今回は、MySQLのWHERE句の条件式で利用される、AND(かつ)、OR(または)の構文を組み合わせて複数の条件を組み合わせた場合に、どのような優先度で条件が決定されているかを調べてみました。

初歩的な部分ではありますが、条件式が複雑になってくると、自分で訳がわからなくなってしまうことがあったため、改めて整理してみました。

3つの条件式を用意し条件式のパターンによって、どの範囲が結果として出力されるかを確認しています。

パターン1:WHERE (条件式①) AND (条件式②) OR (条件式③)

WHERE (条件式①) AND (条件式②) OR (条件式③)の場合、
特にカッコ等で優先度を指定していない場合は、左から順番に読み込まれます。
(条件式①) AND (条件式②)が先に判定されて、その結果に対してOR (条件式③)が適用されるイメージです。

「(条件式①) AND (条件式②」の結果は以下です。(網掛け部分)

上記に対して「OR (条件式③)」が適用された最終的な結果は以下となります。(網掛け部分)

パターン2:WHERE (条件式①) AND ((条件式②) OR (条件式③))

WHERE (条件式①) AND ((条件式②) OR (条件式③))の場合、
カッコで括られた部分((条件式②) OR (条件式③))が先に判定されて、その結果に対して(条件式①) ANDが適用されるイメージです。

「(条件式②) OR (条件式③)」の結果は以下です。(網掛け部分)

上記に対して「(条件式①) AND」が適用された最終的な結果は以下となります。(網掛け部分)

まとめ

今回は、WHERE句の複数条件の処理の順番によって、結果がどのように変わるかを確認しました。

ご参考になれば幸いです。

以上になります。ありがとうございました。

コメント

タイトルとURLをコピーしました