MySQLでANDとORを組み合わせる問題を解決する

MySQLでANDとORを組み合わせる問題を解決する

以下のように表示されます。

SELECT prod_name,prod_price FROM products WHERE vend_id = 1002 OR vend_id = 1003 AND prod_price >= 10;

上記のステートメントによって返される結果は、私たちが望むものではありません。

分析:

その理由は計算の順序にあります。 SQL では、OR 演算子よりも AND 演算子が優先されます。 SQL が上記の WHERE 句を見ると、計算順序では AND の優先順位が高いため、演算子が誤って結合されます。

この問題の解決策は、括弧を使用して対応する演算子を明示的にグループ化することです。

次のSELECT文を参照してください

 製品名、製品価格を選択
    製品から

    ここで ( vend_id = 1002 または vend_id = 1003 ) かつ prod_price >= 10;

補足知識: Mysql | データをフィルタリングするための組み合わせた where 句 (AND、OR、IN、NOT)

MySQL では複数の where 句の使用が許可されており、where 句の組み合わせにより AND 句と OR 句の 2 つの方法を使用できます。

データベース内の演算記号: AND、OR、IN、NOT。

そして

SELECT * FROM products WHERE products.vend_id = 1003 AND products.prod_price <= 10;

または

SELECT * FROM products WHERE products.vend_id = 1002 OR products.vend_id = 1003;

IN を使用できる句では OR を使用しないことをお勧めします。IN はパフォーマンスが良く、理解しやすいです。

SELECT * FROM products WHERE products.vend_id IN (1002,1003);

ない:

MySQL は、IN、BETWEEN、および EXISTS 句の否定でのみ NOT をサポートしています。これは、さまざまな条件をサポートする他のほとんどのデータベースとは異なります。

SELECT * FROM products WHERE products.vend_id NOT IN (1002,1003);

知らせ:

AND と OR の両方を含む句では、MySQL は AND 演算を優先します。一般的には、処理順序を決定し、あいまいさを排除するために () を使用することをお勧めします。

例えば:

SELECT * FROM products WHERE (products.vend_id= 1002 OR products.vend_id=1003) AND prod_price >= 10;

MySQL で AND と OR の組み合わせによって発生する問題を解決する方法に関する上記の記事は、編集者が皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL 条件付きクエリと使用法および優先順位の例の分析
  • MySQL での and or クエリの優先度分析

<<:  Vueキャッシュ機能の使い方

>>:  JavaScript のよりエレガントなエラー処理方法 async await

推薦する

固定サイドバーを実現するためのJavaScript

固定サイドバーを実装するにはJavaScriptを使用します。参考までに、具体的な内容は次のとおりで...

Mysql 5.7.19 無料インストール バージョンで遭遇した落とし穴 (コレクション)

1. 公式ウェブサイトから 64 ビットの zip ファイルをダウンロードします。 2. インスト...

自己終了XHTMLタグを書くときに注意すべきこと

XHTML の img タグはいわゆる自己終了タグであり、XML では完全に合法です。 XHTMLの...

uniappは録音アップロード機能を実現

目次uni-app の紹介HTML部分js部分インスタンスを作成する録音を開始録音終了録音を再生再生...

実行中のDockerコンテナのポートマッピングを変更する方法

序文docker run がコンテナを作成して実行するときに、-p を使用してポート マッピング ル...

Vue3コンポーネントの開発詳細

目次1. はじめに2. コンポーネント開発1. コンポーネントの構成2. ヘッダーコンポーネントの開...

遭遇したいくつかのブラウザ互換性の問題について簡単に説明します

背景ブラウザの互換性の問題を解決するのは非常に面倒なことです。高度な技術はそれほど必要ありませんが、...

Dockerイメージのサイズを縮小する6つの方法

2017 年に Vulhub に取り組み始めてから、私は厄介な問題に悩まされてきました。Docker...

Reactフックの仕組み

目次1. React フックと純粋関数2. シンプルなmyUseState 3. myUseStat...

Centos6.5 の rpm パッケージから mysql5.7 をインストールするときに発生する初期化エラーの解決策

1. rzをサーバーにアップロードして解凍する rz [root@mini2 アップロード]# ta...

HTML における br と br/ の違い

スタックフローからの回答:単に<br>だけで十分です。その他の形式は、XHTML との互...

Docker: /etc/default/docker の DOCKER_OPTS パラメータを変更しても反映されない

デフォルトでは、 /etc/default/docker 設定は有効になりません。docker 環境...

Vue3ナビゲーションバーコンポーネントのカプセル化実装方法

参考までに、Vue3でナビゲーションバーコンポーネントをカプセル化し、スクロールバーのスクロールに合...

スケジュールされた時間に古いジャンクファイルを自動的に削除する Linux 用の Autotrash ツール

Autotrash は、古い削除済みファイルを消去するプロセスを自動化するコマンド ライン プログラ...

MySQL ビュー管理ビューの例の詳細説明 [追加、削除、変更、クエリ操作]

この記事では、例を使用して MySQL ビューの管理ビュー操作について説明します。ご参考までに、詳細...