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

Designperspektive Technologie ist ein wichtiges Kapital der Designfähigkeit

Ein Designsoldat fragte: „Kann ich nur reines Des...

Detaillierte Erläuterung der MySQL-Datenbankisolationsebene und des MVCC

Inhaltsverzeichnis 1. Isolationsstufe LESEN SIE U...

Referenzen und Referenzdetails in Vue3

Der Editor teilt Ihnen auch die entsprechenden Pr...

Ausführliches Tutorial zur Installation und Konfiguration von MySQL 8.0.20

In diesem Artikel finden Sie eine ausführliche An...

Beispielcode zum Erstellen eines Dropdown-Menüs mit reinem CSS

Einführung: Als ich mir in letzter Zeit die Frage...

Beispielcode zur Implementierung des Verlaufs in Vuex

Ich habe vor Kurzem eine visuelle Operationsplatt...

So drucken Sie hervorgehobenen Code in der Node.JS-Konsole

Vorwort Wenn der Code ausgeführt wird und ein Feh...

Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort vergessen?

Was tun, wenn Sie Ihr Linux/Mac MySQL-Passwort ve...

JavaScript-Lösung für die Setinterval-Verzögerung um eine Sekunde

Bei Verwendung von setinterval wird festgestellt,...

JavaScript-Puzzlespiel

In diesem Artikelbeispiel wird der spezifische Ja...

So löschen Sie Tabellendaten in MySQL

Es gibt zwei Möglichkeiten, Daten in MySQL zu lös...

Erläuterung der Array-Verarbeitung in React und Redux

Dieser Artikel stellt einige häufig verwendete Fu...