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

Einführung mehrerer benutzerdefinierter Schriftarten in CSS3

Heute habe ich ein Problem in HTML gefunden. Es s...

So finden Sie Informationen zu nicht festgeschriebenen Transaktionen in MySQL

Vor einiger Zeit habe ich einen Blogbeitrag mit d...

So verwenden Sie gdb zum Debuggen von Kerndateien in Linux

1.core-Datei Wenn während der Programmausführung ...

Tomcat Server Erste Schritte Super ausführliches Tutorial

Inhaltsverzeichnis 1. Einige Konzepte von Tomcat ...

Führen Sie die Schritte zur Verwendung des Elements in vue3.0 aus

Vorwort: Verwenden Sie das Element-Framework in v...

Fassen Sie die häufig verwendeten n-ten-Kind-Selektoren zusammen

Vorwort In der Front-End-Programmierung verwenden...

Tabelle zeigt den Grenzcode, den Sie anzeigen möchten

Gemeinsame Eigenschaften von Tabellen Die grundle...

Implementierungscode der Front-End-HTML-Skin-Änderungsfunktion

50 Zeilen Code zum Ändern von 5 Hautfarben, einsc...

MySQL-Zeittypauswahl

Inhaltsverzeichnis DATETIME ZEITSTEMPEL Wie man w...

Befehle zum Suchen der Domänen-IP-Adresse im Linux-Terminal (fünf Methoden)

In diesem Tutorial wird erklärt, wie Sie die IP-A...