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

W3C Tutorial (6): W3C CSS Aktivitäten

Ein Stylesheet beschreibt, wie ein Dokument angez...

Detaillierte Installationshistorie von Ubuntu 20.04 LTS

In diesem Artikel wird die Erstellung einer USB-S...

Diskussion zum Problem verstümmelter Zeichen in Iframe-Seitenparametern

Ich bin auf ein sehr ungewöhnliches Problem mit ve...

Detaillierte Schritte zum Bereitstellen von lnmp unter Docker

Inhaltsverzeichnis Ziehen Sie ein CentOS-Image Ge...

JavaScript-Tipps zur Verbesserung Ihrer Programmierkenntnisse

Inhaltsverzeichnis 1. Filtern Sie eindeutige Wert...

Detailliertes Tutorial zur Installation von ffmpeg unter Linux

1. Installieren Sie ffmpeg unter Centos Linux 1. ...

So konfigurieren Sie den Redis-Sentinel-Modus in Docker (auf mehreren Servern)

Inhaltsverzeichnis Vorwort Zustand Docker install...

Daten in der Layui-Tabellenzeile dynamisch bearbeiten

Inhaltsverzeichnis Vorwort Stil Funktion Beschrei...

So implementieren Sie die Navigationsfunktion im WeChat Mini-Programm

1. Rendern2. Bedienungsschritte 1. Beantragen Sie...

So verbinden Sie Navicat mit der Docker-Datenbank auf dem Server

Starten Sie den MySQL-Container in Docekr Verwend...

Lösen Sie das Problem, dass ifconfig im Docker nicht verfügbar ist

Als ich kürzlich Docker lernte, stellte ich fest,...