Prioritätsanalyse von und/oder Abfragen in MySQL

Prioritätsanalyse von und/oder Abfragen in MySQL

Dies ist ein Problem, das leicht übersehen wird. Zunächst einmal müssen wir uns über Folgendes im Klaren sein:
In MySQL hat AND eine höhere Ausführungspriorität als OR. Das heißt, ohne die Einschränkung durch Klammern () werden immer zuerst AND-Anweisungen und dann OR-Anweisungen ausgeführt.
Zum Beispiel:

select * from table where Bedingung 1 UND Bedingung 2 ODER Bedingung 3
Entspricht „select * from table“, wobei (Bedingung 1 UND Bedingung 2) ODER Bedingung 3

select * from table where Bedingung 1 UND Bedingung 2 ODER Bedingung 3 UND Bedingung 4
Entspricht „select * from table“, wobei (Bedingung 1 UND Bedingung 2) ODER (Bedingung 3 UND Bedingung 4)

Schauen wir uns zum besseren Verständnis einige Beispiele an:

Daten der Testtabelle:

Namen festlegen utf8mb4;
Setzen Sie FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Tabellenstruktur für Buch
-- ----------------------------
DROP TABLE, WENN `Buch` EXISTIERT;
CREATE TABLE `Buch` (
 `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
 `name` varchar(25) ZEICHENSATZ utf8mb4 SORTIMENT utf8mb4_0900_ai_ci STANDARD NULL,
 `Autor` varchar (25) Zeichensatz utf8mb4 COLLATE utf8mb4_0900_ai_ci Standard NULL,
 `Preis` Dezimalzahl (10, 2) DEFAULT NULL,
 PRIMÄRSCHLÜSSEL (`id`) MIT BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamisch;

-- ----------------------------
-- Buchaufzeichnungen
-- ----------------------------
INSERT INTO `Buch` VALUES (1, 'PHP', 'Kumpel', 21.00);
INSERT INTO `Buch` VALUES (2, 'JAVA', 'kaven', 23.00);
INSERT INTO `Buch` VALUES (3, 'JAVA Advanced', 'lose', 45,00);
INSERT INTO `Buch` VALUES (4, 'GO', 'Jim', 46,00);
INSERT INTO `Buch` VALUES (5, 'GO Design', 'json', 76.00);
INSERT INTO `Buch` VALUES (6, 'Fortgeschrittene PHP-Programmierung', 'bate', 67.00);
INSERT INTO `Buch` VALUES (7, 'Python', 'Jim', 66.00);
INSERT INTO `Buch` VALUES (8, 'Python-Design', 'Mali', 54,00);
INSERT INTO `Buch` VALUES (9, 'GO-Programmierung', 'kaven', 86,00);
INSERT INTO `Buch` VALUES (11, 'Python3', 'Jim', 55.00);

Setzen Sie FOREIGN_KEY_CHECKS = 1;

Abfragemethode 1:

Wählen Sie * aus dem Buch, wobei Autor = "Jim" oder Autor = "Json" und Name = "PHP" ist.

Die obige Abfrage entspricht:

Wählen Sie * aus dem Buch, wobei Autor = "Jim" oder (Autor = "json" und Name = "PHP");

Dann sind die obigen Abfrageergebnisse leicht zu verstehen.

Abfragemethode 2:

Wählen Sie * aus dem Buch, wobei Name = "PHP" und Autor = "Jim" oder Autor = "json" ist.

Die obige Abfrage entspricht:

Wählen Sie * aus dem Buch, wobei (Name = "PHP" und Autor = "Jim") oder Autor = "json";

Abfragemethode 3:

Wählen Sie * aus dem Buch, wobei Name = "GO" und (Autor = "Jim" oder Autor = "json");

Das ist leicht zu verstehen. Verstehen Sie die Vorrangstellung von „und oder“. Diese Abfragen sind nicht so „schwer zu verstehen“.

Dies ist das Ende dieses Artikels über die Prioritätsanalyse von und/oder Abfragen in MySQL. Weitere relevante MySQL- und/oder Abfrageinhalte finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Mysql-Abfrageanweisung mit mehreren Bedingungen und dem Schlüsselwort „And“
  • MySQL bedingte Abfrage und/oder Verwendung und Priorität Beispielanalyse
  • MySQL Left-Join-Mehrtabellenabfrage, bei der das Schreiben einer Where-Bedingung ein Beispiel ist
  • Ein Beispiel, wie PHP MySQL-Abfrageergebnisse in ein Array konvertiert und sie mit where verknüpft.
  • Analyse des Unterschieds zwischen „Platzieren auf“ und „Wo“ in MySQL-Abfragebedingungen
  • Eine kurze Analyse des Unterschieds zwischen und und wo in der MySQL-Verbindungsabfrage

<<:  Verstehen Sie das elastische CSS3 FlexBox-Layout in 10 Minuten

>>:  Das Problem, dass Formularelemente und Eingabeaufforderungstext nicht ausgerichtet sind

Artikel empfehlen

CSS zum Erzielen eines Animationseffekts der Tik Tok-Abonnementschaltfläche

Ich habe mir vor einiger Zeit Tik Tok angesehen u...

Detaillierter Prozess zur Implementierung des 2048-Minispiels im WeChat-Applet

Rendern Beispielcode Heute werden wir das WeChat-...

Beispielcode zum Vergleich verschiedener Syntaxformate von vue3

Die Standardvorlagenmethode ähnelt vue2 und verwe...

Detaillierte Erklärung des Linux-Kernel-Makros Container_Of

Inhaltsverzeichnis 1. Wie werden Strukturen im Ge...

Detaillierte Erklärung der neuen Funktionen von ES9: Asynchrone Iteration

Inhaltsverzeichnis Asynchrones Durchlaufen Asynch...

Detaillierte Erklärung der Rolle von Klammern in AngularJS

1. Die Rolle der Klammern 1.1 Eckige Klammern [ ]...

Vue realisiert die Funktion eines Bucheinkaufswagens

In diesem Artikelbeispiel wird der spezifische Co...

Tutorial zur Installation von Android Studio unter Ubuntu 19 und darunter

Aus Erfahrung weiß man, dass es eine gute Angewoh...

Lösung für BT Baota Panel php7.3 und php7.4 unterstützen ZipArchive nicht

Die Lösung für das Problem, dass die PHP7.3-Versi...

Steuern Sie die vertikale Mitte des Textes im HTML-Textfeld über CSS

Wenn das Höhenattribut von Text definiert ist, wir...