Vollständiger Join in MySQL
In diesem Tutorial soll untersucht werden, wie ein vollständiger Join oder ein vollständiger äußerer Join in MySQL durchgeführt wird.
Ein Full Outer Join wird verwendet, um die gesamten Daten aus zwei separaten Tabellen zusammenzuführen oder zu kombinieren. Stellen Sie sich zum Beispiel vor, dass wir zwei Tabellen mit den Namen student_id
und student_name
mit einer gemeinsamen Spalte haben.
Wir können diese beiden Tabellen vollständig in MySQL zusammenführen, indem wir die Werte der gemeinsamen Spalte zusammen mit einem UNION
, LEFT JOIN
und RIGHT JOIN
abgleichen. Während dieser Prozess auf den ersten Blick kompliziert erscheint, lassen Sie uns ihn in Schritten verstehen.
Bevor wir beginnen, erstellen wir einen Dummy-Datensatz, indem wir eine Tabelle student_details
mit einigen Zeilen erstellen.
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Geo","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
Um die Einträge in den Daten anzuzeigen, verwenden wir den folgenden Code.
SELECT * FROM student_details;
Ausgabe:
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Geo Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
Wir brauchen eine weitere Tabelle namens student_marks
, die die Noten jedes Studenten enthält, die der stu_id
entsprechen. Wir können eine solche Tabelle mit der folgenden Abfrage erstellen.
-- create the table student_marks
CREATE TABLE student_marks(
stu_id int,
stu_marks int
);
-- insert rows to the table student_marks
INSERT INTO student_marks(stu_id,stu_marks)
VALUES(1,10),
(2,20),
(3,30),
(4,7),
(5,9),
(6,35),
(7,15);
Wir können diese Tabelle mit Hilfe der folgenden Abfrage visualisieren.
SELECT * from student_marks;
Ausgabe:
stu_id stu_marks
1 10
2 20
3 30
4 7
5 9
6 35
7 15
Lassen Sie uns darauf abzielen, einen vollständigen äußeren Join in den Tabellen student_details
und student_marks
mit stu_id
als gemeinsame Spalte in beiden Tabellen zu erstellen.
FULL JOIN
-Anweisung in MySQL
Die grundlegende Syntax der FULL OUTER JOIN
-Technik ist wie folgt.
SELECT * FROM table_1
LEFT JOIN table_2 ON table_1.id = table_2.id
UNION
SELECT * FROM table_1
RIGHT JOIN table_2 ON table_1.id = table_2.id
Wie in der obigen Abfrage zu sehen, zielen wir darauf ab, die beiden Tabellen mit den Namen table_1
und table_2
basierend auf der gemeinsamen Spalte id
mit Hilfe eines left join
und eines right join
zu verbinden.
Wir können die folgende Abfrage verwenden, um unser Problem mit den Tabellen student_details
und student_marks
zu lösen.
-- Full Join using UNION
SELECT * FROM student_details
LEFT JOIN student_marks ON student_details.stu_id = student_marks.stu_id
UNION
SELECT * FROM student_details
RIGHT JOIN student_marks ON student_details.stu_id = student_marks.stu_id
Wie im obigen Code zu sehen, führen wir die beiden betrachteten Tabellen basierend auf der Spalte stu_id
zusammen. Die Ausgabe des obigen Codes lautet wie folgt.
stu_id stu_firstName stu_lastName stu_id stu_marks
1 Preet Sanghavi 1 10
2 Rich John 2 20
3 Veron Brow 3 30
4 Geo Jos 4 7
5 Hash Shah 5 9
6 Sachin Parker 6 35
7 David Miller 7 15
Wie im Ausgabeblock zu sehen ist, werden stu_marks
jedem Schüler basierend auf der stu_id
nach dem vollständigen äußeren Join korrekt zugewiesen.
Hinweis: Wir können die doppelte Spalte stu_id
vermeiden, indem wir mit Hilfe von left join
und right join
die genauen zu verbindenden Spaltennamen angeben. Dies würde aufgrund der UNION
-Klausel unserer Abfrage einen äußeren Join ohne doppelte Zeilen erstellen.
Daher können wir mit Hilfe der UNION
-Anweisung zusammen mit einem left join
und einem right join
auf zwei verschiedenen Tabellen effizient eine vollständige äußere Verknüpfung in MySQL ohne doppelte Zeilen erstellen.