Inhaltsverzeichnis
1. Sieben Verbindungssituationen
2. Linker Beitritt
Der vollständige Name des linken Joins lautet „Left Outer Join“, und der linke Join gibt die Daten in der linken Tabelle zurück 每一条记录(即每一行数据)
. Hinweis: Das bedeutet nicht 每一个数据
, dass es davon abhängt, SELECT
welche Felder ausgewählt werden.
SELECT <select_list>
FROM TableA A
LEFT JOIN TableB B
ON A.Key = B.Key
SELECT
Ist das Feld, das die zurückzugebende Auswahl darstellt (d. h. welche Spalte zurückgegeben werden soll);FORM
Es bedeutet, aus welcher Tabelle ausgewählt werden soll. Hier bildet der linke Join eine temporäre Tabelle und wählt aus der temporären Tabelle aus;TableA A
Es kann auch als geschrieben werdenTableA as A
, das heißt, es wirdTableA
ein anderer Name gegebena
. Der Alias wird hier angegeben, damit er später abgekürzt werden kann, sodass er nicht geschrieben werden mussON TableA.A = TableB.B
.LEFT JOIN
Zeigt das Zusammenführen der SummeTableA
inTableB
einer temporären Tabelle an undon
gibt die Bedingungen für die Verbindung an . Hier bedeutet es , die Datensätze mit gleichen SchlüsselnON A.Key = B.Key
in den beiden Tabellen zu verbinden . Wenn die temporäre Tabelle für die Datensätze mit ungleichen Schlüsseln erstellt wird, werden die Datensätze in der linken Tabelle erstellt beibehalten werden, und die verbleibenden Positionen in der rechten Tabelle bleiben erhalten. Verwenden Sie einfach die Auffüllung.null
Konkretes Beispiel: Likou-Datenbankthema 175. Kombination zweier Tabellen
Link: https://leetcode.cn/problems/combine-two-tables/description/
Antwort
select firstName, lastName, city, state
from Person p left join Address a
on p.Personid = a.Personid
- on ist die Verbindungsbedingung beim Generieren der temporären Tabelle
null
. Wenn die linke und rechte Tabelle diese Bedingung erfüllen, werden sie direkt verbunden. Wenn sie diese Bedingung nicht erfüllen, füllt die rechte Tabelle die Datensätze aus, die die Bedingungen nicht erfüllen . Aber egal was passiert, am Ende werden die Datensätze in der linken Tabelle zurückgegeben. Wenn die rechte Tabelle die Bedingungen erfüllt, werden die entsprechenden Daten angezeigt. Wenn sie die Bedingungen nicht erfüllt, werden sie angezeigtnull
. - Die Bedingungen hinter „wo“ werden nach der Generierung der temporären Tabelle gefiltert . Diejenigen, die die „wo“-Bedingungen nicht erfüllen, werden herausgefiltert.
- Die Personentabelle hat 2 Zeilen und die Adresstabelle hat 2 Zeilen. 2 x 2 = 4. In 4 Situationen können insgesamt 4 Zeilen gebildet werden.
1. Die Verbindungsbedingung lautet: on Person.PersonId = Address.personId
- Diese Verknüpfungsbedingung bedeutet,
personId
die gleichen Datensätze in den beiden Tabellen zu verbinden, den Rest in der linken Tabelle beizubehalten und die verbleibenden Positionen in der rechten Tabelle zu füllennull
.
2. Die Verbindungsbedingung lautet: on Person.PersonId != Address.personId
Diese Verbindungsbedingung bedeutet, die Datensätze mit ungleicher Personen-ID in den beiden Tabellen zu verbinden, den Rest in der linken Tabelle zu belassen und die verbleibenden Positionen in der rechten Tabelle zu füllen null
.
3. Der linke Join beinhaltet keinen inneren Join
SELECT <select_list>
FROM TableA A
LEFT JOIN TableB B
ON A.Key = B.Key
WHERE B.KEY IS NULL
Die B.Key-Anforderung besteht hier darin , den Teil ohne B im null
linken Join zu erhalten.临时表
4. Richtige Verbindung
Der rechte Join ähnelt dem linken Join.
SELECT <select_list>
FROM TableA A
RIGHT JOIN TableB B
ON A.Key = B.Key
5. Der rechte Join beinhaltet keinen inneren Join
SELECT <select_list>
FROM TableA A
RIGHT JOIN TableB B
ON A.Key = B.Key
WHERE A.Key IS NULL
5. Innere Verbindung
SELECT <select_list>
FROM TableA A
INNER JOIN TableB B
ON A.key = B.key
- Wenn Sie es einfach schreiben
join
, wird es standardmäßig verwendet内连接
6. Vollständige Verbindung
SELECT <select_list>
FROM TableA A
FULL OUTER JOIN TableB B
ON A.Key = B.Key
7. Der vollständige Join umfasst keinen inneren Join
SELECT <select_list>
FROM TableA A
FULL OUTER JOIN TableB B
ON A.Key = B.Key
WHERE A.Key IS NULL
OR B.Key IS NULL