Was ist der Unterschied zwischen LEFT JOIN
und LEFT OUTER JOIN
?
Was ist der Unterschied zwischen LEFT JOIN
und LEFT OUTER JOIN
?
Antworten:
Gemäß Dokumentation: FROM (Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Das Schlüsselwort OUTER
ist als optional markiert (in eckigen Klammern eingeschlossen). In diesem speziellen Fall spielt es OUTER
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 angeben JOIN
. Mit anderen Worten, das ist legal:
SELECT *
FROM A JOIN B ON A.X = B.Y
Hier ist eine Liste äquivalenter Syntaxen:
A LEFT JOIN B A LEFT OUTER JOIN B
A RIGHT JOIN B A RIGHT OUTER JOIN B
A FULL JOIN B A FULL OUTER JOIN B
A INNER JOIN B A JOIN B
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? .
INNER JOIN
rechts und JOIN
links in der Liste der Äquivalente zu haben?
JOIN
s befolgen würden .
Um Ihre Frage zu beantworten, gibt es keinen Unterschied zwischen LEFT JOIN und LEFT OUTER JOIN. Sie sind genau die gleichen wie ...
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 der SELECT
Anweisung) und sie durch Kommas trennen.
Zu beachtende Punkte:
JOIN
dann ist es standardmäßig ein INNER JOIN
.OUTER
Join muss LEFT
| sein RIGHT
| FULL
das kann man nicht einfach sagen OUTER JOIN
.OUTER
Schlüsselwort löschen und einfach LEFT JOIN
oder RIGHT JOIN
oder sagen FULL JOIN
.Für diejenigen, die diese besser visualisieren möchten, gehen Sie bitte zu diesem Link: Eine visuelle Erklärung der SQL-Joins
CROSS JOIN
das das gleiche wie FULL JOIN
?
Cross Join
und Full Outer Join
... hinzuzufügen, der in gewisser Weise ähnlich erscheint.
Was ist der Unterschied zwischen linker Verknüpfung und linker äußerer Verknüpfung?
Nichts . LEFT JOIN
und LEFT OUTER JOIN
sind gleichwertig.
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:
In anderen Worten,
LEFT JOIN
und sind die LEFT OUTER JOIN
gleichen
RIGHT JOIN
und sind die RIGHT OUTER JOIN
gleichen
Ich hoffe, es kann ein Beitrag für diejenigen sein, die immer noch versuchen, die Antwort zu finden.
Left Join
und Left Outer Join
sind ein und dasselbe . Ersteres ist die Abkürzung für Letzteres. Gleiches gilt für die Right Join
und Right 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
Ergebnisse
Right Join und Right Outer Join
Ergebnisse
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.
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:
Table A | Table B Table A | Table B Table A | Table B Table A | Table B
1 | 5 1 | 1 1 | 1 1 | 1
2 | 1 2 | 2 2 | 2 2 | 2
3 | 6 3 | null 3 | null - | -
4 | 2 4 | null 4 | null - | -
null | 5 - | - null | 5
null | 6 - | - null | 6
OUTER JOIN (FULL) LEFT OUTER (partial) RIGHT OUTER (partial)
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.
JOIN
impliziert INNER JOIN
" zu Ihrer Argumentation für das äußere Join- Vokabular passt?
Zur Beantwortung Ihrer Frage
In SQL Server-Joins ist die Syntax OUTER optional
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
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
Andere äquivalente Syntaxen
INNER JOIN => JOIN
CROSS JOIN => ,
Dotnet Mob Artice wird dringend empfohlen: Tritt SQL Server bei
C) Äußere Verbindung:
There are three type of outer join
1) Left Outer Join = Left Join
2) Right Outer Join = Right Join
3) Full Outer Join = Full Join
Hoffe es würde helfen.
Es gibt hauptsächlich drei Arten von JOIN
Außen: Es gibt drei Arten
Cross Join: Verbindet alles mit allem
Syntaktischer Zucker macht dem Gelegenheitsleser klarer, dass der Join kein innerer ist.
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.
OUTER
Schlüsselwort ist optional.