Was ist der Unterschied zwischen LEFT JOINund LEFT OUTER JOIN?
Was ist der Unterschied zwischen LEFT JOINund LEFT OUTER JOIN?
Antworten:
Gemäß Dokumentation: FROM (Transact-SQL) :
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Das Schlüsselwort OUTERist als optional markiert (in eckigen Klammern eingeschlossen). In diesem speziellen Fall spielt es OUTERkeine 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 JOINKlausel optional. In diesem Fall ist die Standardeinstellung, INNERwenn 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 JOINrechts und JOINlinks in der Liste der Äquivalente zu haben?
JOINs 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 FROMKlausel der SELECTAnweisung) und sie durch Kommas trennen.
Zu beachtende Punkte:
JOINdann ist es standardmäßig ein INNER JOIN.OUTERJoin muss LEFT| sein RIGHT| FULLdas kann man nicht einfach sagen OUTER JOIN.OUTERSchlüsselwort löschen und einfach LEFT JOINoder RIGHT JOINoder 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 JOINdas das gleiche wie FULL JOIN?
Cross Joinund 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 JOINund LEFT OUTER JOINsind gleichwertig.
OUTERoptional 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 JOINund sind die LEFT OUTER JOINgleichen
RIGHT JOINund sind die RIGHT OUTER JOINgleichen
Ich hoffe, es kann ein Beitrag für diejenigen sein, die immer noch versuchen, die Antwort zu finden.
Left Joinund Left Outer Joinsind ein und dasselbe . Ersteres ist die Abkürzung für Letzteres. Gleiches gilt für die Right Joinund Right Outer JoinBeziehung. 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.
JOINimpliziert 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.
OUTERSchlüsselwort ist optional.