Probleme bei der Ausführungsreihenfolge von AND und OR in SQL-Anweisungen

Probleme bei der Ausführungsreihenfolge von AND und OR in SQL-Anweisungen

Frage

Beim Schreiben von Datenbank-SQL ist mir gestern ein Problem begegnet. Die Ursache des Problems liegt in der Ausführungspriorität der Schlüsselwörter AND und OR in SQL-Anweisungen. Lassen Sie uns dieses Problem testen.

Szenario

1. Es gibt eine Studententabelle „Student“, die Tabellenfelder umfassen ID (Primärschlüssel des Benutzers), Name (Benutzername), Grade (Klasse), Class (Klasse), Sex (Geschlecht). wie folgt:

Tabellenstruktur

2. Importieren Sie zehn Testdaten wie folgt in die Tabelle:

Tabellendaten

3. Nun müssen Sie herausfinden, welche Schülerinnen in der 1. Klasse weiblich sind, bzw. welche Schülerinnen in der 2. Klasse weiblich sind. Die SQL-Anweisung lautet wie folgt:
Wählen Sie * vom Schüler aus, wobei Geschlecht = 'Student' und Klasse = 1 oder Klasse = 2 ist.
Das Ergebnis der SQL-Abfrage entspricht jedoch nicht den Anforderungen. Die Ausführungsergebnisse lauten wie folgt:

Ausführungsergebnisse

Das Hinrichtungsergebnis ergab auch, dass in der 2. Klasse männliche Schüler anwesend waren, was offensichtlich falsch ist.

4. Ändern Sie die SQL-Anweisung und fügen Sie Klammern hinzu. wie folgt:

Wählen Sie * aus dem Schüler aus, wobei Geschlecht = "Student" und (Klasse = 1 oder Klasse = 2)

Das Ergebnis der SQL-Abfrage erfüllt die Anforderungen

analysieren

Im obigen Szenario liegt der Schlüssel zum Problem in der Ausführungsreihenfolge von UND und ODER.
Den Daten zufolge ist die Priorität relationaler Operatoren von hoch nach niedrig: NICHT > UND > ODER
Wenn nach „Where“ eine „OR“-Bedingung steht, trennt „OR“ automatisch die linke und rechte Abfragebedingung.
Genau wie die erste Anweisung im obigen Szenario ist ihre Abfragebedingung in zwei Teile unterteilt (oder):

1. Geschlecht = „weiblich“ und Klasse = 1
2. Klasse = 2

Dabei geht es darum, die Schülerinnen der 1. Klasse und die Schülerinnen der 2. Klasse zu ermitteln. Erfüllt nicht die Anforderungen der ursprünglichen Abfrage.
Die Lösung besteht darin, Klammern zu verwenden, um die Ausführungsreihenfolge zu unterscheiden. <br /> Wie in der zweiten Anweisung im obigen Szenario ist die Abfragebedingung in zwei Teile (und) unterteilt:

1. sex = 'weiblich' 
2. (Klasse=1 bzw. Klasse=2)

Das könnte Sie auch interessieren:
  • Grafische Beschreibung der Ausführungsreihenfolge von SQL-Anweisungen
  • Detaillierte Erläuterung der Ausführungsreihenfolge von SQL-Anweisungen
  • Detaillierte Erläuterung der Ausführung von SQL-Anweisungen (Übersicht über die MySQL-Architektur -> Abfrageausführungsprozess -> SQL-Analysereihenfolge)
  • Lernen Sie die Ausführungsreihenfolge von SQL-Abfragen von Grund auf
  • In diesem Artikel erfahren Sie, wie die Ausführungsreihenfolge von SQL lautet

<<:  Linux (Center OS7) installiert JDK, Tomcat und MySQL, um eine Ausführungsumgebung für Java-Webprojekte zu erstellen.

>>:  So verwenden Sie Axios, um mehrere wiederholte Anfragen in einem Projekt zu filtern

Artikel empfehlen

Zusammenfassung der @-Verwendung in CSS (mit Beispielen und Erklärungen)

Eine At-Regel ist eine Deklaration, die Anweisung...

Detaillierte Erklärung der Ansichtszusammenfassungsdefinition im Angular-Framework

Vorwort Als Front-End-Framework, das „für große F...

MySQL 8.0.21-Installationstutorial unter Windows-System (Abbildung und Text)

Installationsvorschlag : Versuchen Sie, für die I...

Slot-Anordnung und Nutzungsanalyse in Vue

Die Betriebsumgebung dieses Tutorials: Windows 7-...

Detaillierte Erklärung der Rolle von Klammern in AngularJS

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

Beispielcode für mehrere Elementtabellen, um synchrones Scrollen zu erreichen

Element UI implementiert mehrere Tabellen, die gl...

So verwenden Sie html2canvas, um HTML-Code in Bilder umzuwandeln

Konvertieren Sie Code in ein Bild mit html2canvas...

CSS verwendet radialen Farbverlauf zur Implementierung von Coupon-Stilen

In diesem Artikel erfahren Sie, wie Sie mithilfe ...

Implementierung der Header-Informationen für Nginx-Operationsantworten

Voraussetzung: Sie müssen das Modul ngx_http_head...

IIS und APACHE implementieren die HTTP-Umleitung auf HTTPS

IIS7 Laden Sie das HTTP Rewrite-Modul von der off...