Was ist der Unterschied zwischen LEFT JOIN
und LEFT OUTER JOIN
?
sql-server
tsql
left-join
outer-join
KG Sosa
quelle
quelle
OUTER
Schlüsselwort ist optional.Antworten:
Gemäß Dokumentation: FROM (Transact-SQL) :
Das Schlüsselwort
OUTER
ist als optional markiert (in eckigen Klammern eingeschlossen). In diesem speziellen Fall spielt esOUTER
keine Rolle , ob Sie angeben oder nicht. Beachten Sie, dass , während die anderen Elemente der Join - Klausel auch als optional markiert, so dass sie aus wird einen Unterschied machen.Beispielsweise ist der gesamte Typteil der
JOIN
Klausel optional. In diesem Fall ist die Standardeinstellung,INNER
wenn Sie nur angebenJOIN
. Mit anderen Worten, das ist legal:Hier ist eine Liste äquivalenter Syntaxen:
Schauen Sie sich auch die Antwort an, die ich auf diese andere SO-Frage hinterlassen habe : SQL Left Join gegen mehrere Tabellen in der FROM-Zeile? .
quelle
INNER JOIN
rechts undJOIN
links in der Liste der Äquivalente zu haben?JOIN
s befolgen würden .Auf der obersten Ebene gibt es hauptsächlich drei Arten von Verknüpfungen:
INNER JOIN - ruft Daten ab, wenn sie in beiden Tabellen vorhanden sind.
Es gibt drei Arten von OUTER JOIN :
LEFT OUTER JOIN
- ruft Daten ab, falls in der linken Tabelle vorhanden.RIGHT OUTER JOIN
- ruft Daten ab, falls in der rechten Tabelle vorhanden.FULL OUTER JOIN
- ruft Daten ab, wenn sie in einer der beiden Tabellen vorhanden sind.CROSS JOIN verbindet , wie der Name schon sagt
[n X m]
, alles mit allem.Ähnlich wie in einem Szenario, in dem wir die zu verbindenden Tabellen einfach auflisten (in der
FROM
Klausel derSELECT
Anweisung) und sie durch Kommas trennen.Zu beachtende Punkte:
JOIN
dann ist es standardmäßig einINNER JOIN
.OUTER
Join mussLEFT
| seinRIGHT
|FULL
das kann man nicht einfach sagenOUTER JOIN
.OUTER
Schlüsselwort löschen und einfachLEFT JOIN
oderRIGHT JOIN
oder sagenFULL JOIN
.Für diejenigen, die diese besser visualisieren möchten, gehen Sie bitte zu diesem Link: Eine visuelle Erklärung der SQL-Joins
quelle
CROSS JOIN
das das gleiche wieFULL JOIN
?Cross Join
undFull Outer Join
... hinzuzufügen, der in gewisser Weise ähnlich erscheint.Nichts .
LEFT JOIN
undLEFT OUTER JOIN
sind gleichwertig.quelle
OUTER
optional ist.Ich bin ein PostgreSQL-DBA, soweit ich den Unterschied zwischen äußeren und nicht äußeren Verknüpfungen verstehen kann, ist der Unterschied ein Thema, über das im Internet viel diskutiert wird. Bis heute habe ich nie einen Unterschied zwischen diesen beiden gesehen; Also ging ich weiter und versuche den Unterschied zwischen diesen zu finden. Am Ende habe ich die gesamte Dokumentation darüber gelesen und die Antwort darauf gefunden:
Wenn Sie sich also die Dokumentation ansehen (zumindest in PostgreSQL), finden Sie diesen Satz:
„Die Worte
INNER
undOUTER
sind in allen Formen optional.INNER
Ist die Standardeinstellung;LEFT
,RIGHT
undFULL
implizieren eine äußere Verknüpfung.“In anderen Worten,
LEFT JOIN
und sind dieLEFT OUTER JOIN
gleichenRIGHT JOIN
und sind dieRIGHT OUTER JOIN
gleichenIch hoffe, es kann ein Beitrag für diejenigen sein, die immer noch versuchen, die Antwort zu finden.
quelle
Left Join
undLeft Outer Join
sind ein und dasselbe . Ersteres ist die Abkürzung für Letzteres. Gleiches gilt für dieRight Join
undRight Outer Join
Beziehung. Die Demonstration wird die Gleichheit veranschaulichen. Arbeitsbeispiele für jede Abfrage wurden über SQL Fiddle bereitgestellt . Dieses Tool ermöglicht die praktische Bearbeitung der Abfrage.Gegeben
Left Join und Left Outer Join
Ergebnisse
Right Join und Right Outer Join
Ergebnisse
quelle
Ich finde es einfacher, an Joins in der folgenden Reihenfolge zu denken:
Bis ich dieses (relativ) einfache Modell herausgefunden habe, waren JOINS immer eher eine schwarze Kunst. Jetzt machen sie vollkommen Sinn.
Hoffe das hilft mehr als es verwirrt.
quelle
Warum sind LINKS / RECHTS und LINKS AUSSEN / RECHTS AUSSEN gleich? Lassen Sie uns erklären, warum dieses Vokabular. Verstehen Sie, dass Verknüpfungen LINKS und RECHTS spezielle Fälle der Verknüpfung OUTER sind und daher nichts anderes als OUTER LEFT / OUTER RIGHT sein können. Der OUTER-Join wird auch als FULL OUTER bezeichnet, im Gegensatz zu LEFT- und RIGHT-Joins, die TEILWEISE des OUTER-Joins sind. Tatsächlich:
Es ist jetzt klar, warum diese Operationen Aliase haben, und es ist klar, dass nur drei Fälle existieren: INNER, OUTER, CROSS. Mit zwei Unterfällen für den OUTER. Das Vokabular, die Art und Weise, wie Lehrer dies erklären, sowie einige der obigen Antworten lassen es oft so aussehen, als gäbe es viele verschiedene Arten von Verbindungen. Aber es ist eigentlich sehr einfach.
quelle
JOIN
impliziertINNER JOIN
" zu Ihrer Argumentation für das äußere Join- Vokabular passt?Zur Beantwortung Ihrer Frage
Es wird im msdn-Artikel erwähnt: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx
Die folgende Liste zeigt also gleichwertige Join-Syntaxen mit und ohne OUTER
Andere äquivalente Syntaxen
Dotnet Mob Artice wird dringend empfohlen: Tritt SQL Server bei
quelle
Es gibt nur 3 Joins:
C) Äußere Verbindung:
Hoffe es würde helfen.
quelle
Es gibt hauptsächlich drei Arten von JOIN
Außen: Es gibt drei Arten
Cross Join: Verbindet alles mit allem
quelle
Syntaktischer Zucker macht dem Gelegenheitsleser klarer, dass der Join kein innerer ist.
quelle
Nur im Zusammenhang mit dieser Frage möchte ich auch die 2 'APPLY'-Operatoren posten:
JOINS :
INNER JOIN = JOIN
OUTER JOIN
LEFT OUTER JOIN = LEFT JOIN
RIGHT OUTER JOIN = RIGHT JOIN
FULL OUTER JOIN = FULL JOIN
CROSS JOIN
SELF-JOIN : Dies ist nicht gerade eine separate Art von Join. Dies bedeutet im Grunde, eine Tabelle mit einer der oben genannten Verknüpfungen mit sich selbst zu verbinden. Ich war jedoch der Meinung, dass es im Zusammenhang mit JOIN-Diskussionen erwähnenswert ist, da Sie diesen Begriff von vielen Mitgliedern der SQL Developer-Community hören werden.
BEWERBEN :
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
Beispiel aus der Praxis, wann OUTER / CROSS APPLY in SQL verwendet werden soll
Ich finde den APPLY-Operator sehr vorteilhaft, da er eine bessere Leistung bietet als die gleiche Berechnung in einer Unterabfrage. Sie ersetzen auch viele analytische Funktionen in älteren Versionen von SQL Server. Aus diesem Grund glaube ich, dass ein SQL-Entwickler, nachdem er sich mit JOINS vertraut gemacht hat, versuchen sollte, als nächstes die APPLY-Operatoren zu lernen.
quelle