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

Maven-Projekte schneller in Docker erstellen

Inhaltsverzeichnis I. Überblick 2. Konventionelle...

Beispiel für die Verwendung von Dockerfile zum Erstellen eines Nginx-Images

Einführung in Dockerfile Docker kann automatisch ...

JavaScript-Objekte (Details)

Inhaltsverzeichnis JavaScript-Objekte 1. Definiti...

Win10 Docker-Toolsbox-Tutorial zum Erstellen einer PHP-Entwicklungsumgebung

Bild herunterladen Docker-Pull MySQL:5.7 docker p...

Vue importiert Echarts, um ein Linienstreudiagramm zu realisieren

In diesem Artikel wird der spezifische Code für d...

Detaillierte Erklärung zur Verwendung des Grep-Befehls in Linux

1. Offizielle Einführung grep ist ein häufig verw...

JavaScript zum Erreichen aller oder umgekehrter Auswahlfunktionen

In diesem Artikel wird der spezifische JavaScript...

So installieren Sie OpenSSH aus dem Quellcode in CentOS 7

Umgebung: Mindestinstallation von CentOS 7.1.1503...

MySQL Server 8.0.13.0 Installations-Tutorial mit Bildern und Text

Installieren Sie 8.0.13 basierend auf MySQL 6.1.3...

Detaillierte Erklärung der Grundkonzepte von HTML

Was ist HTML? HTML ist eine Sprache zur Beschreib...

vue verwendet Ele.me UI, um die Filterfunktion von Teambition zu imitieren

Inhaltsverzeichnis Problembeschreibung Die allgem...