MySQL での and or クエリの優先度分析

MySQL での and or クエリの優先度分析

これは見落とされがちな問題かもしれません。まず、次の点を明確にする必要があります。
MySQL では、AND は OR よりも実行優先度が高くなります。つまり、括弧 () の制限がなければ、AND ステートメントが常に最初に実行され、次に OR ステートメントが実行されます。
例えば:

条件 1 かつ条件 2 または条件 3 のテーブルから * を選択
select * from table where (条件 1 AND 条件 2) OR 条件 3 と同等

条件 1 かつ条件 2 または条件 3 かつ条件 4 のテーブルから * を選択
select * from table where (条件 1 AND 条件 2) OR (条件 3 AND 条件 4) と同等

より深く理解するために、いくつかの例を見てみましょう。

テストテーブルデータ:

名前を設定します utf8mb4;
FOREIGN_KEY_CHECKS = 0 を設定します。

-- ----------------------------
-- 本の表構造
-- ----------------------------
`book` が存在する場合はテーブルを削除します。
テーブル「book」を作成します(
 `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `name` varchar(25) 文字セット utf8mb4 COLLATE utf8mb4_0900_ai_ci デフォルト NULL,
 `author` varchar(25) 文字セット utf8mb4 COLLATE utf8mb4_0900_ai_ci デフォルト NULL,
 `price` 小数点(10, 2) デフォルト NULL,
 BTREE を使用した主キー (`id`)
) エンジン = InnoDB 文字セット = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- 書籍の記録
-- ----------------------------
`book` に VALUES (1, 'PHP', 'mate', 21.00) を挿入します。
`book` に VALUES (2, 'JAVA', 'kaven', 23.00) を挿入します。
`book` に VALUES (3, 'JAVA Advanced', 'loose', 45.00) を挿入します。
`book` に VALUES (4, 'GO', 'jim', 46.00) を挿入します。
`book` に VALUES (5, 'GO Design', 'json', 76.00) を挿入します。
INSERT INTO `book` VALUES (6, 'PHP Advanced Programming', 'bate', 67.00);
`book` に 7、'Python'、'jim'、66.00 を挿入します。
`book` に VALUES (8, 'Python Design', 'mali', 54.00) を挿入します。
`book` に VALUES (9, 'GO Programming', 'kaven', 86.00) を挿入します。
`book` に値 (11, 'Python3', 'jim', 55.00) を挿入します。

FOREIGN_KEY_CHECKS = 1 を設定します。

クエリ方法 1:

SELECT * FROM book WHERE author='jim' OR author='json' AND name='PHP';

上記のクエリは次のクエリと同等です。

SELECT * FROM book WHERE author='jim' OR (author='json' AND name='PHP');

すると、上記のクエリ結果が簡単に理解できるようになります。

クエリ方法 2:

SELECT * FROM book WHERE name='PHP' AND author='jim' OR author='json';

上記のクエリは次のクエリと同等です。

SELECT * FROM book WHERE (name='PHP' AND author='jim') OR author='json';

クエリ方法3:

SELECT * FROM book WHERE name='GO' AND (author='jim' OR author='json');

これは理解しやすいですね。 and またはの優先順位を理解します。これらのクエリはそれほど「理解するのが難しい」ものではありません。

これで、MySQL の and or クエリの優先度分析に関するこの記事は終了です。MySQL および or クエリに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • And キーワードを使用した MySQL の複数条件クエリ ステートメント
  • MySQL 条件付きクエリと使用法および優先順位の例の分析
  • MySQL 左結合マルチテーブルクエリの条件記述例
  • PHPがMySQLクエリの結果を配列に変換し、それを連結する例
  • MySQLクエリ条件におけるonとwhereの配置の違いの分析
  • MySQL接続クエリにおけるととwhereの違いの簡単な分析

<<:  CSS3 FlexBox の伸縮自在なレイアウトを 10 分で理解する

>>:  フォーム要素とプロンプトテキストが揃っていない問題

推薦する

パズル効果を実現するネイティブ js

この記事では、パズル効果を実現するためのネイティブjsの具体的なコードを参考までに共有します。具体的...

CSS仕様 BEM CSSとOOCSSサンプルコード詳細説明

序文プロジェクト開発中、各人のコーディング習慣が異なるため、記述された CSS コードは十分に構造化...

Windows での MySQL インストール チュートリアル (画像とテキスト付き)

MySQL インストール手順 MySQL は、スウェーデンの MySQL AB によって開発された...

MySQL デッドロック ルーチン: 一意のインデックスの下でのバッチ挿入順序の不一致

序文デッドロックの本質はリソースの競合です。バッチ挿入の順序が一貫していないと、デッドロックに陥りや...

MySQLはinit-connectを使用してアクセス監査機能の実装を増やします

まず init-connect を通じて mysql 接続を初期化し、次にインスタンスに接続する必要...

mysqlは内部コマンドエラーの解決策ではありません

「mysqlは内部コマンドではありません」というエラーは、mysqlのbinディレクトリパスが環境変...

ストリーマーボタンの効果を実現するCSS3アニメーション

CSS3 を学習する過程で、CSS3 属性を使用すると多くのクールな効果を簡単に実現できることが分か...

MySQL 8.0.22 winx64 のインストールと設定方法のグラフィックチュートリアル

MySQL-8.0.22-winx64のデータベースインストールチュートリアルは参考になります。具体...

Windows 版 MySQL のインストール、起動、基本設定に関する詳細なグラフィック チュートリアル

ダウンロード:ステップ 1: ウェブサイトを開きます (ダウンロードするには公式ウェブサイトにアクセ...

Linux システムでの virtuoso データベースの詳細なインストールと使用

最近、リンク データについていくつか調査していて、rdf データベースを使用する必要があったため、v...

純粋な CSS3 で美しい入力ボックスアニメーションスタイルライブラリを実現 (テキスト入力愛)

純粋な CSS3 で実装された美しい入力ボックス アニメーション スタイル ライブラリを共有します ...

Mac ノードの削除と再インストールのケーススタディ

Macノードの削除と再インストール消去 ノード -v sudo npm アンインストール npm -...

Javascriptの基礎を学ぶための10の重要な質問

目次1. Javascript とは何ですか? 2. DOMとは何か3. JSコードの実行方法4. ...

HTML タグ マーキーを使用してスクロール効果を実現する簡単な方法 (必読)

ページの自動スクロール効果は JavaScript で実現できますが、今日偶然、JS 制御なしでさま...

MySQL 5.7 で my.ini ファイルが見つからない場合の解決策

my.ini とは何ですか? my.ini は、MySQL データベースで使用される設定ファイルです...