Analyse des Unterschieds zwischen der Verwendung von Left Join-Einstellungsbedingungen in „on“ und „where“ in MySQL

Analyse des Unterschieds zwischen der Verwendung von Left Join-Einstellungsbedingungen in „on“ und „where“ in MySQL

Dieser Artikel veranschaulicht anhand von Beispielen den Unterschied zwischen der Verwendung von On- und Where-Bedingungen für Left Join in MySQL. Teilen Sie uns die Einzelheiten zu Ihrer Information mit:

1. Zunächst bereiten wir zwei Tabellen zum Testen vor.

CREATE TABLE `a` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT KOMMENTAR 'ID',
 `name` varchar(32) STANDARD '' KOMMENTAR 'name',
 PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8;

CREATE TABLE `b` (
 `id` int(11) unsigned NOT NULL AUTO_INCREMENT KOMMENTAR 'ID',
 `a_id` int(11) DEFAULT '0' COMMENT 'eine Tabellen-ID',
 `name` varchar(32) STANDARD '' KOMMENTAR 'name',
 PRIMÄRSCHLÜSSEL (`id`)
)ENGINE=InnoDB STANDARD-CHARSET=utf8;

Die Daten der beiden Tabellen sind in der Abbildung dargestellt:

Führen Sie die folgende Left-Join-Abfrage aus:

Wähle * aus einem linken Join b auf a.id = b.a_id;

Wir fügen nach „on“ bzw. „where“ Bedingungen hinzu, um zu sehen, ob die Ausführungsergebnisse dieselben sind.

Wähle * aus einem linken Join b auf a.id = b.a_id und b.id > 3;

Wählen Sie * aus einem linken Join b auf a.id = b.a_id, wobei b.id > 3;

In den beiden obigen Anweisungen sind die von uns festgelegten Bedingungen dieselben. In beiden ist b.id > 3, weshalb die angezeigten Ergebnisse unterschiedlich sind.

Die Schlüsselwortfolge einer SQL-Anweisung lautet im Allgemeinen von > wobei > gruppieren nach > haben > sortieren nach

Wenn sich der Left Join im Von-Bereich befindet, filtert die On-Bedingung zuerst die rechte Tabelle des Left Join und dann die Ergebnisse der Where-Bedingung.

Mehrere Left Joins erzeugen eine temporäre Tabelle. Die On-Bedingung dient zum Filtern der Left Join Right-Tabelle und die Where-Bedingung zum Filtern der zuletzt erzeugten temporären Tabelle.

Also:

Wenn die Bedingung b.id > 3 nach on geschrieben wird, wird zuerst die rechte Tabelle (verwandte Tabelle) durchsucht, um die Zeilen zu erhalten, die die Bedingungen erfüllen. Anschließend wird die Haupttabelle links verknüpft, um alle Zeilen der Haupttabelle zurückzugeben. Die Zeilen, die in der rechten Tabelle nicht übereinstimmen, werden durch null dargestellt.

Wenn die Bedingung „b.id > 3“ nach „where“ geschrieben wird, wird die Haupttabelle links mit der rechten Tabelle (zugehörige Tabelle) verbunden, um alle Zeilen zurückzugeben. Anschließend wird die Where-Bedingung verwendet, um die Ergebnisse zu filtern.

Hinweis: Die Bedingung nach „on“ bezieht sich auf die Tabelle rechts (die zugehörige Tabelle) und hat keine Auswirkung auf die Haupttabelle.

Wähle * aus einem linken Join b auf a.id = b.a_id und a.id > 3;

Wir haben für die Haupttabelle nach on die Bedingung a.id > 3 hinzugefügt, aber alle Daten in der Haupttabelle werden weiterhin angezeigt, allerdings wirkt sich dies auf die Anzeige der Tabelle rechts (der zugehörigen Tabelle) aus.

Wenn Sie die Haupttabelle filtern möchten, sollten Sie die Bedingung nach „where“ schreiben.

Wählen Sie * aus einem linken Join b auf a.id = b.a_id, wobei a.id > 3;

Leser, die an weiteren MySQL-bezogenen Inhalten interessiert sind, können sich die folgenden Themen auf dieser Site ansehen: „MySQL-Abfragekenntnisse“, „Zusammenfassung der allgemeinen MySQL-Funktionen“, „MySQL-Protokolloperationskenntnisse“, „Zusammenfassung der MySQL-Transaktionsoperationskenntnisse“, „MySQL-gespeicherte Prozedurkenntnisse“ und „Zusammenfassung der MySQL-Datenbanksperrenkenntnisse“.

Ich hoffe, dass dieser Artikel für jedermann beim Entwurf einer MySQL-Datenbank hilfreich ist.

Das könnte Sie auch interessieren:
  • Analysieren des Unterschieds zwischen der Verwendung von „on“ und „where“ Filtern in MySQL left (right) join
  • Einführung in den Unterschied zwischen On- und Where-Bedingungen in der MySQL-Left-Join-Operation
  • Analyse des Unterschieds zwischen „Platzieren auf“ und „Wo“ in MySQL-Abfragebedingungen
  • Detaillierte Erklärung des Unterschieds zwischen ON und Where in MySQL

<<:  Was ist nach der Installation von Ubuntu 20.04 zu tun (Anleitung für Anfänger)

>>:  Praktische TypeScript-Tipps, die Sie vielleicht nicht kennen

Artikel empfehlen

Welche Eigenschaften sollte eine gute Werbung haben?

Manche Leute sagen, dass Werbung machen wie ein Me...

Zusammenfassung der zwölf Methoden der Vue-Wertübertragung

Inhaltsverzeichnis 1. Vom Vater zum Sohn 2. Vom S...

Ausführliches Tutorial zur Installation von MySQL 5.6-ZIP-Paketen

Bisher haben wir alle Dateien mit der Endung .msi...

Detaillierte Zusammenfassung der Übermittlungsmethoden für Webformulare

Sehen wir uns zunächst verschiedene Möglichkeiten...

So löschen Sie zusätzliche Kernel in Ubuntu

Schritt 1: Den aktuellen Kernel anzeigen rew $ un...

Die Vor- und Nachteile von Nginx und LVS und ihre geeignete Nutzungsumgebung

Lassen Sie uns zu Beginn darüber sprechen, was La...

Ubuntu 16.04 Installations-Tutorial unter VMware 12

In diesem Artikel finden Sie das Installations-Tu...

Eclipse konfiguriert Tomcat und Tomcat hat eine ungültige Port-Lösung

Inhaltsverzeichnis 1. Eclipse konfiguriert Tomcat...

So lösen Sie das Problem, das Root-Passwort von Mysql auf dem Mac zu vergessen

Ich habe MySQL auf meinem Computer längere Zeit n...

js, um einen 3D-Karusselleffekt zu erzielen

In diesem Artikel wird der spezifische Code zur I...

Virtueller vsftpd-Benutzer basierend auf MySql-Authentifizierung

Inhaltsverzeichnis 1. MySQL-Installation 1.2 Tabe...

MySQL-Partitionierungspraxis mit Navicat

MySQL-Partitionierung ist hilfreich bei der Verwa...