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

JS implementiert Städtelisteneffekt basierend auf VUE-Komponente

In diesem Artikelbeispiel wird der spezifische Co...

Implementierungsschritte zum Erstellen mehrseitiger Programme mit Webpack

Es ist sehr üblich, webpack zum Erstellen einseit...

So implementieren Sie das Prototypmuster in JavaScript

Überblick Das Prototypmuster bezieht sich auf den...

Docker-Image-Zugriff auf den lokalen Elasticsearch-Port-Vorgang

Wenn Sie den vom Docker-Stack bereitgestellten Im...

Tutorial zu HTML-Tabellen-Tags (34): Zeilenspannen-Attribut ROWSPAN

In einer komplexen Tabellenstruktur erstrecken si...

Detaillierte Erläuterung des Prozessmanagements im Linux-System

Inhaltsverzeichnis 1. Das Konzept von Prozess und...

MySQL 8.0.13 Download- und Installations-Tutorial mit Bildern und Text

MySQL ist die am häufigsten verwendete Datenbank....

Tutorial zur Verwendung von Webpack in JavaScript

Inhaltsverzeichnis 0. Was ist Webpack 1. Einsatz ...

Analyse der Methode zum Einrichten geplanter Aufgaben in MySQL

Dieser Artikel beschreibt anhand eines Beispiels,...

Empfehlen Sie mehrere MySQL-bezogene Tools

Vorwort: Mit der kontinuierlichen Entwicklung der...

Detaillierte Erklärung, wie MySQL Phantom-Lesevorgänge löst

1. Was ist Phantomlesen? Wenn bei einer Transakti...