Was ist der Unterschied zwischen INNER JOIN
, LEFT JOIN
, RIGHT JOIN
und FULL JOIN
in MySQL?
Die Lektüre dieses Originalartikels auf The Code Project wird Ihnen sehr helfen: Visual Representation of SQL Joins.
Lesen Sie auch diesen Beitrag: SQL SERVER - Bessere Leistung - LEFT JOIN oder NOT IN?.
Den Originalbeitrag finden Sie unter: Unterschied zwischen JOIN und OUTER JOIN in MySQL.
Mit INNER JOIN werden alle Datensätze abgerufen, die die beiden Tabellen auf der Grundlage der angegebenen ON-Klausel gemeinsam haben.
Mit LEFT JOIN werden alle Datensätze aus der LINKEN verknüpften Tabelle abgerufen, aber wenn Sie einige Spalten aus der RECHTEN Tabelle ausgewählt haben und es keine Bezugsdatensätze gibt, enthalten diese Spalten NULL.
RIGHT JOIN ist wie oben, erhält aber alle Datensätze in der Tabelle RIGHT.
FULL JOIN holt alle Datensätze aus beiden Tabellen und setzt NULL in die Spalten, in denen keine Bezugsdatensätze in der anderen Tabelle vorhanden sind.
Eine SQL JOIN-Klausel wird verwendet, um Zeilen aus zwei oder mehr Tabellen zu kombinieren,
basierend auf einem gemeinsamen Feld zwischen ihnen.
In SQL gibt es verschiedene Arten von Joins:
INNER JOIN: gibt Zeilen zurück, wenn es eine Übereinstimmung in beiden Tabellen gibt.
LINKS JOIN: gibt alle Zeilen aus der linken Tabelle zurück, auch wenn es keine Übereinstimmungen in der rechten Tabelle gibt.
RECHTER JOIN: gibt alle Zeilen aus der rechten Tabelle zurück, auch wenn es keine Übereinstimmungen in der linken Tabelle gibt.
FULL JOIN: Kombiniert die Ergebnisse des linken und rechten Outer-Joins.
Die verbundene Tabelle enthält alle Datensätze aus beiden Tabellen und füllt NULLs für fehlende Übereinstimmungen auf beiden Seiten auf.
SELF JOIN: wird verwendet, um eine Tabelle mit sich selbst zu verbinden, als ob die Tabelle zwei Tabellen wäre, wobei mindestens eine Tabelle in der SQL-Anweisung vorübergehend umbenannt wird.
CARTESIAN JOIN: gibt das kartesische Produkt der Datensätze aus den zwei oder mehr verbundenen Tabellen zurück.
Wir können die ersten vier Joins im Detail betrachten:
Wir haben zwei Tabellen mit den folgenden Werten.
TabelleA
id firstName lastName
.......................................
1 arun prasanth
2 ann antony
3 sruthy abc
6 new abc
TabelleB
id2 age Place
................
1 24 kerala
2 24 usa
3 25 ekm
5 24 chennai
....................................................................
INNERE ANMELDUNG
Anmerkung: ergibt die Schnittmenge der beiden Tabellen, d.h. die Zeilen, die sie in TabelleA und TabelleB gemeinsam haben
Syntax
SELECT table1.column1, table2.column2...
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;
Wenden Sie es in unserer Beispieltabelle an:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
INNER JOIN TableB
ON TableA.id = TableB.id2;
Ergebnis wird sein
firstName lastName age Place
..............................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
LEFT JOIN
Hinweis : ergibt alle ausgewählten Zeilen in TabelleA sowie alle gemeinsamen ausgewählten Zeilen in TabelleB.
Syntax
SELECT table1.column1, table2.column2...
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;
Wenden Sie es in unserer Beispieltabelle an:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
LEFT JOIN TableB
ON TableA.id = TableB.id2;
Ergebnis
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
RIGHT JOIN
Hinweis : ergibt alle ausgewählten Zeilen in TabelleB, plus alle gemeinsamen ausgewählten Zeilen in TabelleA.
Syntax
SELECT table1.column1, table2.column2...
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
Wenden Sie es in unserer Beispieltabelle an:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
RIGHT JOIN TableB
ON TableA.id = TableB.id2;
Ergebnis
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
NULL NULL 24 chennai
FULL JOIN
Hinweis :Es werden alle ausgewählten Werte aus beiden Tabellen zurückgegeben.
Syntax
SELECT table1.column1, table2.column2...
FROM table1
FULL JOIN table2
ON table1.common_field = table2.common_field;
Wenden Sie es in unserer Beispieltabelle an:
SELECT TableA.firstName,TableA.lastName,TableB.age,TableB.Place
FROM TableA
FULL JOIN TableB
ON TableA.id = TableB.id2;
Ergebnis
firstName lastName age Place
...............................................................................
arun prasanth 24 kerala
ann antony 24 usa
sruthy abc 25 ekm
new abc NULL NULL
NULL NULL 24 chennai
Interessante Tatsache
Bei INNER-Joins spielt die Reihenfolge keine Rolle
Bei (LEFT, RIGHT oder FULL) OUTER joins spielt die Reihenfolge eine Rolle
Schauen Sie sich am besten diesen Link an, der Ihnen interessante Details über die Join-Reihenfolge liefert