Vollständiger Join in MySQL

Preet Sanghavi 28 März 2022
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.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Verwandter Artikel - MySQL Query