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

推薦する

Linux ディスク クォータ管理のグラフィカルな例

ディスク クォータは、コンピューター内の指定されたディスクのストレージ制限です。つまり、管理者はユー...

Vue3はCSSの無限シームレススクロール効果を実装します

この記事では、CSS無限シームレススクロール効果を実現するためのvue3の具体的なコードを参考までに...

IE6 の select を div でカバーできないバグの解決方法

div を使用してマスクを作成したり、ポップアップ ウィンドウをシミュレートしたりします。ただし、I...

グローバルトーストコンポーネントをカプセル化するVueの完全な例

目次序文1. vue-cliを使う1. Toastコンポーネントを定義する2. main.jsで設定...

Linuxの運用と保守、基本的なプロセス管理、リアルタイム監視と制御

目次1. バックグラウンドで実行されるジョブ2. 信号を使用してプロセスを制御する基本的なプロセス管...

初心者のための入門チュートリアル⑤:ウェブサイト登録はとても簡単、簡単な登録のヒント

スペースを購入してウェブサイトを構築したことがある友人なら、ウェブサイトは正式に開設する前に登録する...

CSSスタイルシートとフォーマットレイアウトの詳細な説明

スタイルシートCSS (カスケーディング スタイル シート) は、HTML Web ページを美しくす...

webpackコード断片化の実装

目次背景コモンズチャンクプラグイン分割チャンク構成リソースを非同期に読み込む要約する背景高性能なアプ...

Jsonフォーマットの詳細な説明

目次JSON は次の 2 つの構造に基づいて構築されます。 2. JSON形式1. オブジェクト2....

CentOS 7.4 で MySQL 5.7.28 バイナリモードをインストールする方法

Linuxシステムバージョン: CentOS7.4 MySQL バージョン: 5.7.28 Linu...

Nginx に lua-nginx-module モジュールをインストールする方法

ngx_lua_module は、lua パーサーを nginx に埋め込み、lua 言語で記述され...

https暗号化アクセス用にnginxを設定するための詳細なチュートリアル

環境: 1 CentOS Linux リリース 7.5.1804 (コア)ファイアウォールと sel...

一般的なイベントを処理するための JavaScript の使用に関する詳細な説明

目次1. フォームイベント2. マウスイベント3. キーボードイベント4. 共通イベントメソッド(ウ...

CentOS7 は rpm パッケージを使用して mysql 5.7.18 をインストールします

例示するこの記事は、2017 年 5 月 20 日に MySQL-5.7.18 を使用して作成されま...

Vue3 での Teleport の使用に関する詳細な説明

目次テレポートの目的テレポートの仕組みこの記事では、以下の内容を取り上げます。テレポートの目的テレポ...