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

推薦する

動的テーブルを実装するための要素サンプルコード

目次【コード背景】 【コード実装】 #1# -> コード再利用の基本は、再利用可能なコンポーネ...

Vue の NetEase Cloud Music Player インターフェースを模倣したシンプルな実装プロセス

仕事のプロジェクトのニーズにより、曲の再生が必要となり、さまざまな資料を参考にして、NetEase ...

mysql 8.0.18.zip のインストールと構成方法のグラフィック チュートリアル (Windows 64 ビット)

以前にインストールされたバージョンのデータベースをアンインストールする方法については、この記事を参照...

Dockerを使用してAngularプロジェクトをデプロイする方法

Docker を使用して Angular プロジェクトをデプロイする方法は 2 つあります。1 つは...

WeChatアプレットでSVGアイコンを使用する方法

SVG は、さまざまな利点があるため、近年広く使用されています。残念ながら、WeChat ミニプログ...

Vueプロジェクトがグラフィック検証コードを実装

この記事の例では、グラフィック検証コードを実装するためのVueプロジェクトの具体的なコードを参考まで...

Vue+Router+Element でシンプルなナビゲーションバーを実装する

このプロジェクトでは、Vue+Router+Element の具体的なコードを共有して、シンプルなナ...

MySql バージョンの問題に対する完璧なソリューション sql_mode=only_full_group_by

1. sql_modeを確認する @@sql_mode を選択照会された値は次のとおりです。 ON...

ウェブページの広告デザインにおけるウェブデザインの寸法とルール

1. 800*600 未満の場合、Web ページの幅が 778 以内であれば、水平スクロール バーは...

CSS3 弾性拡張ボックスの詳細な説明

使用フレキシブル ボックスはフロントエンドの Web ページ レイアウトで重要な役割を果たしますが、...

MySQL インデックスのカーディナリティの概念と使用例

この記事では、例を使用して、MySQL インデックス カーディナリティの概念と使用方法を説明します。...

88 秒で 1,000 万件のレコードを MySQL データベース テーブルに挿入する方法

私が使用しているデータベースはMySQLデータベースバージョン5.7ですまずデータベーステーブルを自...

Zabbixで電子メールアラートを実装する方法

オンラインチュートリアルに従って実装しました。 zabbix3.4、スクリプトとsendEmailを...

Node.js の fs モジュールと Path モジュールのメソッドの詳細な説明

概要:ファイルシステム モジュールは、標準の POSIX ファイル I/O 操作セットをラップしたシ...

MySQL 5.1 のパスワードを変更し、MySQL データベースにリモートでログインする方法

mysql ユーザーを作成し、承認します。形式: 「ユーザー パスワード」で識別されるユーザー@ログ...