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

Implementierungs- und Nutzungsszenarien der JS-Anti-Shake-Drosselungsfunktion

Inhaltsverzeichnis 1. Was ist die Anti-Shake-Funk...

Vue3 erhält die aktuelle Routingadresse

Richtige Antwort Verwenden von useRouter : // Rou...

Detaillierte Erklärung der Docker-Maschinennutzung

Docker-Machine ist ein offiziell von Docker berei...

Pycharm2017 realisiert die Verbindung zwischen Python3.6 und MySQL

In diesem Artikel erfahren Sie, wie Sie Python3.6...

So kompilieren Sie den Linux-Kernel

1. Laden Sie die erforderliche Kernel-Version her...

Verwendung und Szenarioanalyse des npx-Befehls in Node.js

Tutorial zur Verwendung von NPX Heute Abend, als ...

Erste Schritte Tutorial für Anfänger ⑨: So erstellen Sie eine Portal-Website

Darüber hinaus wird eine mit einem Blog-Programm e...

Tutorial zur Installation von VMware WorkStation 14 Pro unter Ubuntu 17.04

In diesem Artikel wird die spezifische Methode zu...