ホームページ > データベース > mysql チュートリアル > SQL の「AND」演算子と「OR」演算子には異なる優先順位がありますか?これはクエリ結果にどのような影響を与えますか?

SQL の「AND」演算子と「OR」演算子には異なる優先順位がありますか?これはクエリ結果にどのような影響を与えますか?

Linda Hamilton
リリース: 2025-01-22 21:57:13
オリジナル
257 人が閲覧しました

Do SQL's `AND` and `OR` Operators Have Different Precedence, and How Does This Affect Query Results?

SQL 論理演算子の優先順位: AND および OR

質問:

次の SQL ステートメントを考えてみましょう:

<code class="language-sql">SELECT [...]
FROM [...]
WHERE some_col IN (1,2,3,4,5) AND some_other_expr</code>
ログイン後にコピー

<code class="language-sql">SELECT [...]
FROM [...]
WHERE some_col IN (1,2,3) OR some_col IN (4,5) AND some_other_expr</code>
ログイン後にコピー

これら 2 つのステートメントは同等ですか?同等ではない場合、どのように優先順位を付ければよいでしょうか?

答え:

AND 演算子と OR 演算子の優先順位

SQL では、演算子の優先順位によって、WHERE 句内の論理演算子が評価される順序が決まります。 AND 演算子と OR 演算子の優先順位は次のとおりです:

  • AND 演算子は OR 演算子よりも優先されます。

これは、AND 演算子が OR 演算子の右側にある場合でも、最初に評価されることを意味します。

ステートメントに優先順位を適用します

指定されたステートメント内:

  • 最初のステートメントでは AND 演算子のみが使用されているため、優先順位は単純です。
  • 2 番目のステートメントでは、OR 演算子と AND 演算子の組み合わせが使用されており、OR 演算子は AND 演算子の前に置かれます。

したがって、2 番目のステートメントは次のように評価されます:

<code class="language-sql">WHERE (some_col IN (1,2,3)) OR (some_col IN (4,5) AND some_other_expr)</code>
ログイン後にコピー

真理値表の検証

計算された差異を示す真理値表は次のとおりです:

some_col some_other_expr 语句 1 语句 2
1 0 False True
2 1 True True
3 0 False True
4 0 False False
5 1 False True

ご覧のとおり、これら 2 つのステートメントの真理値は最初の行で異なり、これらが等価ではないことがわかります。

優先順位を上書きするには括弧を使用してください

計算の順序を変更したい場合は、括弧を使用してデフォルトの優先順位をオーバーライドできます。たとえば、2 番目のステートメントを最初のステートメントと同等にするには、次のように記述します:

<code class="language-sql">WHERE (some_col IN (1,2,3) OR some_col IN (4,5)) AND some_other_expr</code>
ログイン後にコピー

以上がSQL の「AND」演算子と「OR」演算子には異なる優先順位がありますか?これはクエリ結果にどのような影響を与えますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート