Abbildung von Left Join, Right Join, Inner Join und Full Join (für Anfänger)

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, SELECTwelche Felder ausgewählt werden.

SELECT <select_list>
FROM TableA A
LEFT JOIN TableB B
ON A.Key = B.Key
  • SELECTIst das Feld, das die zurückzugebende Auswahl darstellt (d. h. welche Spalte zurückgegeben werden soll);
  • FORMEs 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 AEs kann auch als geschrieben werden TableA as A, das heißt, es wird TableAein anderer Name gegeben a. Der Alias ​​wird hier angegeben, damit er später abgekürzt werden kann, sodass er nicht geschrieben werden muss ON TableA.A = TableB.B.
  • LEFT JOINZeigt das Zusammenführen der Summe TableAin TableBeiner temporären Tabelle an und ongibt 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/

Bitte fügen Sie eine Bildbeschreibung hinzu
Bitte fügen Sie eine Bildbeschreibung hinzu

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 Tabellenull . 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 angezeigt null.
  • 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, personIddie 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üllen null.

Bitte fügen Sie eine Bildbeschreibung hinzu

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 nulllinken 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

8. Referenzmaterialien

  1. Abbildung: Die detaillierteste Datenbank für Left-Join, Right-Join, Inner-Join und Full-Join in der Geschichte!
  2. Illustration von MySQL Inner Join, Outer Join, Left Join, Right Join, Full Join ... zu viele
  3. Der Unterschied zwischen den Einschränkungsbedingungen in Left Join und Where

Supongo que te gusta

Origin blog.csdn.net/e2788666/article/details/131259484
Recomendado
Clasificación