Grundlegende Syntax für Multi-Table-JoinsBei der Multi-Table-Verbindung werden mehrere Tabellen zu einer Tabelle zusammengefasst und anschließend abgefragt. Wählen Sie Feld1, Feld2, ... von Tabelle1 {inner|lift|right} verbinde Tabelle2 vom Verbindungszustand; Es gibt zwei Tabellen: Abteilungstabelle und Mitarbeitertabelle Cross Join und kartesisches ProduktphänomenQuerverbindungCross Join, auch bekannt als unbedingter innerer Join/kartesischer Join Jedes Element in der ersten Tabelle wird der Reihe nach mit jedem Element in der anderen Tabelle kombiniert. Wählen Sie * aus Mitarbeiter, Abteilung; Das obige Ergebnis ist definitiv nicht das, was wir wissen möchten. Jede Person in der linken Tabelle hat 4 Abteilungen. Ein genauer Blick auf diese 4 Datensätze zeigt genau das Ergebnis, wenn man jeden Datensatz in der linken Tabelle nacheinander mit der rechten Tabelle abgleicht. Kartesisches ProduktphänomenDer Grund für das kartesische Produktphänomen: Es gibt keine gültige Verbindungsbedingung zwischen den beiden Tabellen. Da Sie keine Join-Bedingung haben, kann die erste Zeile dieser Tabelle definitiv eins zu eins mit allen Zeilen der anderen Tabelle abgeglichen werden. Ebenso kann die zweite Zeile dieser Tabelle definitiv eins zu eins mit allen Zeilen der anderen Tabelle abgeglichen werden. Und so weiter, die letzte Zeile m dieser Tabelle kann auch eins zu eins mit allen Zeilen der anderen Tabelle abgeglichen werden. Wenn die andere Tabelle n Zeilen hat, muss die Anzahl der am Ende angezeigten Zeilen m*n Zeilen betragen. Wenn Sie kein kartesisches Produktphänomen erzeugen möchten, müssen Sie effektive Tabellenverknüpfungsbedingungen hinzufügen. Im obigen Beispiel stellt die dep_id der linken Tabelle ihre Abteilung nur dann dar, wenn sie mit der ID der rechten Tabelle übereinstimmt. Innerer JoinINNER JOIN dient dazu, die Schnittmenge mehrerer Tabellen zu finden, also je nach Bedingungen die richtigen Ergebnisse herauszufiltern. Wählen Sie Mitarbeitenden-ID, Mitarbeitenden-Name, Mitarbeitenden-Alter, Mitarbeitenden-Dep_ID, Mitarbeitenden-Geschlecht, Dep.ID, Dep.Name von Mitarbeiter als emp INNER JOIN Abteilung als dep ein emp.dep_id=dep.id; Da in der Abteilungstabelle keine Abteilung mit Äußerer JoinLinker äußerer Join Der Left Join basiert auf der linken Tabelle. Wenn in der rechten Tabelle kein passender Datensatz vorhanden ist, wird dieser mit Wählen Sie Mitarbeitenden-ID, Mitarbeitenden-Name, Mitarbeitenden-Alter, Mitarbeitenden-Dep_ID, Mitarbeitenden-Geschlecht, Dep.ID, Dep.Name vom Angestellten als Angestellter in die Abteilung als Dep ein emp.dep_id=dep.id; Rechter äußerer Join Im Gegensatz zum linken Join basiert der rechte Join auf der rechten Tabelle. Wenn einige Felder in der linken Tabelle keine passenden Ergebnisse haben, werden sie mit Wählen Sie Mitarbeitenden-ID, Mitarbeitenden-Name, Mitarbeitenden-Alter, Mitarbeitenden-Dep_ID, Mitarbeitenden-Geschlecht, Dep.ID, Dep.Name vom Angestellten als Angestellter in die Abteilung als Dep ein emp.dep_id=dep.id; Vollständiger äußerer Join Der vollständige äußere Join, der auf dem inneren Join basiert, zeigt alle Datensätze der linken und rechten Tabelle an und die Standarddatensätze in der linken und rechten Tabelle werden mit Für den vollständigen Outer Join gibt es in MySQL keine Der Unterschied zwischen Wählen Sie Mitarbeitenden-ID, Mitarbeitenden-Name, Mitarbeitenden-Alter, Mitarbeitenden-Dep_ID, Mitarbeitenden-Geschlecht, Dep.ID, Dep.Name vom Angestellten als Angestellter in die Abteilung als Dep auf emp.dep_id=dep.id Union Wählen Sie Mitarbeitenden-ID, Mitarbeitenden-Name, Mitarbeitenden-Alter, Mitarbeitenden-Dep_ID, Mitarbeitenden-Geschlecht, Dep.ID, Dep.Name vom Angestellten als Angestellter in die Abteilung als Dep ein emp.dep_id=dep.id; Unterabfragen
Unterabfragen können auch Vergleichsoperatoren wie -- Abfrage des Namens der Abteilung mit einem Durchschnittsalter von über 20 Jahren Namen auswählen aus der Abteilung wobei id in ( Wählen Sie dep_id aus vom Mitarbeiter Gruppieren nach dep_id mit Durchschnittsalter > 20); -- Abfrage des Namens des Mitarbeiters in der Finanzabteilung Namen auswählen vom Mitarbeiter wobei dep_id in ( ID auswählen aus der Abteilung wobei Name = "Finanzabteilung"); -- Abfrage des Alters und des Namens aller Mitarbeiter, die älter als das Durchschnittsalter sind. Wählen Sie Name, Alter vom Mitarbeiter wobei Alter > ( Wählen Sie Durchschnitt(Alter) vom Mitarbeiter); Dies ist das Ende dieses Artikels über die Probleme von Join-Abfragen und Unterabfragen in MySQL. Weitere relevante MySQL-Join-Abfragen und -Unterabfragen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Implementierungsschritte zur Installation eines Redis-Containers in Docker
>>: Detaillierte Erklärung der Unterschiede zwischen den vier Positionierungsarten in CSS
1. Wenn MySQL nicht erfolgreich gestartet wird, ü...
Dieser Artikel stellt hauptsächlich die Implement...
Ich glaube, jeder Mensch ist sehr sensibel für Fa...
MySQL 5.7 und höhere Versionen ermöglichen die di...
Installieren Sie Fastdfs auf Docker Mount-Verzeic...
Wenn Sie MySQL 5.7 verwenden, werden Sie feststel...
In diesem Artikelbeispiel wird der spezifische Co...
1. Daten fließen von QT zu JS 1. QT ruft die JS-F...
Inhaltsverzeichnis Versteckte, absteigende und fu...
Umfassendes Verständnis des html.css-Überlaufs XM...
undefined Wenn wir in JavaScript feststellen möch...
Code kopieren Der Code lautet wie folgt: <html...
I. Einleitung Die Docker-Technologie erfreut sich...
Als ich die kürzlich beliebte WeChat-Tap-Funktion...
Erster Schritt: Klicken Sie in VMware auf "B...