今回は、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句の複数条件の処理の順番によって、結果がどのように変わるかを確認しました。
ご参考になれば幸いです。
以上になります。ありがとうございました。
コメント