Analyse des Unterschieds zwischen „Platzieren auf“ und „Wo“ in MySQL-Abfragebedingungen

Analyse des Unterschieds zwischen „Platzieren auf“ und „Wo“ in MySQL-Abfragebedingungen

Einführung

Beim Schreiben von SQL bin ich heute auf ein Problem gestoßen. Die Anforderung besteht darin, die Daten abzufragen und in umgekehrter Reihenfolge nach dem Punktestand und der Anzahl der Besuche in der vergangenen Woche zu sortieren. Das Problem besteht darin, dass die herkömmliche Schreibweise darin besteht, die Bedingung „Tag >= xxx“ in die Where-Klausel einzufügen. Wenn einige Daten in der letzten Woche keine Besuche aufweisen, können diese Daten nicht gefunden werden. Die Lösung besteht darin, die Bedingung in LEFT JOIN einzufügen.

Ausführungsreihenfolge von MySQL-Anweisungen

Lassen Sie mich zunächst ein Konzept erklären. Die Reihenfolge, in der MySQL-Anweisungen ausgeführt werden, ist nicht die Reihenfolge der SQL-Anweisungen. Hier ist das Beispiel-SQL

AUSWÄHLEN
 <Auswahlliste>
AUS
 <linke_Tabelle> <join_typ>
JOIN <rechte_Tabelle > ON <Joinbedingung >
WO
 <wo_bedingung>
GRUPPELN NACH
 < Gruppieren nach Liste >
HABEN
 <Bedingung habend >
BESTELLEN BIS
 < Bestell_nach_Bedingung >
LIMIT <Grenzwert>

Nachfolgend sehen Sie die SQL-Ausführungsreihenfolge

VON <linke_Tabelle>
ON <Beitrittsbedingung>
<join_type> JOIN <rechte_Tabelle>
WHERE <Wo_Bedingung>
GROUP BY <Gruppenliste>
HAVING <Haben_Bedingung>
WÄHLEN 
DISTINCT <Auswahlliste>
ORDER BY <Bestellbedingung>
LIMIT <Grenzwert_Nummer>

Die Rolle von LEFT JOIN

Der Unterschied in den Ergebnismengen hängt nicht nur mit der SQL-Priorität zusammen, sondern auch mit LEFT JOIN

Beim Left Join gilt die Bedingung nach on nur für die rechte Tabelle.

  • on ist die Bedingung, die beim Generieren einer temporären Tabelle verwendet wird. Unabhängig davon, ob die Bedingung on funktioniert oder nicht, werden die Zeilen der linken Tabelle (table_name1) zurückgegeben.
  • Wobei die Bedingung verwendet wird, nachdem die temporäre Tabelle generiert wurde. Zu diesem Zeitpunkt spielt es keine Rolle, ob Left Join verwendet wird oder nicht. Alle Zeilen, die die Bedingung nicht erfüllen, werden herausgefiltert.

Das Obige ist ein Auszug aus zwei Materialien, die es gut zusammenfassen können (die Originallinks finden Sie weiter unten und sie enthalten Beispiele).

Quellen:

  • Schritt für Schritt: Übersicht über die MySQL-Architektur -> Abfrageausführungsprozess -> SQL-Analysereihenfolge
  • Der Unterschied zwischen den On- und Where-Bedingungen in MySQL Left Join-Operationen
  • Der Unterschied zwischen dem Platzieren von Filterbedingungen in „on“ und „where“ in SQL.

Zusammenfassen

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • MySQL ruft Daten basierend auf dem JSON-Feldinhalt als Abfragebedingung ab (einschließlich JSON-Arrays).
  • Der Unterschied und die Gründe zwischen den MySQL-Abfragebedingungen nicht in und in
  • Detaillierte Erläuterung des Problems der Übereinstimmung, selbst wenn in der MySQL-Abfragebedingung am Ende der Zeichenfolge ein Leerzeichen steht
  • Detaillierte Erklärung der allgemeinen Verwendung von MySQL-Abfragebedingungen
  • Wird der Index in der MySQL-Abfragebedingung verwendet?
  • MySQL erklärt, wie man Abfragebedingungen optimiert

<<:  Tutorial zur Installation und Konfiguration einer virtuellen Linux-Maschine unter dem Windows-Betriebssystem

>>:  Vue Element-ui-Tabelle realisiert Baumstrukturtabelle

Artikel empfehlen

Teilen Sie 20 JavaScript-Einzeilencodes

Inhaltsverzeichnis 1. Holen Sie sich den Wert des...

Tutorial zu HTML-Tabellen-Tags (11): Horizontales Ausrichtungsattribut ALIGN

In horizontaler Richtung können Sie die Ausrichtu...

Designtheorie: Menschenorientiertes Designkonzept

<br />Als sich das Denken in Ost und West sp...

Vue implementiert eine kleine Countdown-Funktion

In vielen Projekten muss eine Countdown-Funktion ...

Implementieren eines Tabellen-Scrollkarusselleffekts durch CSS-Animation

Eine Anwendung einer CSS-Animation mit demselben ...

So ändern Sie MySQL-Berechtigungen, um Hosts den Zugriff zu ermöglichen

Aktivieren Sie Remote-Zugriffsrechte für MySQL My...

Lösung zur Installation von Vim im Docker-Container

Inhaltsverzeichnis Der Anfang der Geschichte Inst...

So richten Sie den Start einer JAR-Anwendung unter CentOS7 ein

Fallstricke bei der Projektimplementierung Beim B...

So verwenden Sie das JavaScript-Strategiemuster zum Validieren von Formularen

Inhaltsverzeichnis Überblick Formularvalidierung ...

Eine kurze Diskussion über die Anpassung mobiler Endgeräte

Vorwort Beim Schreiben von Front-End-Code kommt m...

Lassen Sie uns ausführlich über den Symboldatentyp in ES6 sprechen

Inhaltsverzeichnis Symboldatentyp Der Grund, waru...

So verleihen Sie einer Website ein höheres und ansprechenderes Aussehen

„Wie lässt man eine Website hochwertig aussehen? ...

Ein kurzer Vortrag über die parasitäre Kompositionsvererbung in JavaScript

Vererbung von Kompositionen Kombinationsvererbung...