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

10 Best Practices zum Erstellen und Warten großer Vue.js-Projekte

Inhaltsverzeichnis 1. Nutzen Sie Slots, um Kompon...

Spezifische Verwendung des Linux-Befehls „dirname“

01. Befehlsübersicht dirname - entfernt nicht zu ...

Gängige Angriffe auf Web-Frontends und Möglichkeiten, sie zu verhindern

Die Sicherheitsprobleme, die bei der Frontend-Ent...

Lösung für das Problem des MySQL-Master-Slave-Switch-Kanals

Nach der VIP-Konfiguration wird beim Aktiv/Standb...

Eine kurze Diskussion über die MySQL-Optimierungslösung für große Tabellen

Hintergrund Die Menge neuer Daten in der Geschäft...

Detailliertes Beispiel der MySQL curdate()-Funktion

Einführung in die MySQL CURDATE-Funktion Bei Verw...

Was ist eine HTML-Datei? So öffnen Sie eine HTML-Datei

HTML steht für Hypertext Markup Language. Heutzut...

JavaScript zum Erzielen eines Dropdown-Menüeffekts

Verwenden Sie Javascript, um ein Dropdown-Menü zu...