LEFT JOIN vs. LEFT OUTER JOIN in SQL Server
-
03-07-2019 - |
Frage
Was ist der Unterschied zwischen LEFT JOIN
und LEFT OUTER JOIN
?
Lösung
Gemäß der 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), und was das bedeutet in diesem Fall, dass, ob Sie es angeben oder nicht macht keinen Unterschied. Beachten Sie, dass während die anderen Elemente der Join-Klausel auch als optional markiert, so dass sie out wird natürlich einen Unterschied machen.
Zum Beispiel kann der gesamte Typ Teil der JOIN
Klausel ist optional, wobei in diesem Fall der Standard INNER
ist, wenn Sie nur JOIN
angeben. Mit anderen Worten, dies ist legal:
SELECT *
FROM A JOIN B ON A.X = B.Y
Hier ist eine Liste äquivalenten 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
Werfen Sie auch einen Blick auf die Antwort, die ich auf dieser anderen SO Frage links: SQL links vs mehrere Tabellen auf FROM Linie verbinden .
Andere Tipps
Um Ihre Frage zu beantworten gibt es keinen Unterschied zwischen LEFT JOIN und LEFT OUTER JOIN, sie sind genau die gleichen , dass das ...
Auf der obersten Ebene gibt es hauptsächlich drei Arten von Verknüpfungen:
- INNER
- OUTER
- CROSS
-
INNER JOIN -. Holt Daten, wenn in den beiden Tabellen
-
OUTER JOIN ist von 3 Typen:
-
LEFT OUTER JOIN
- holt Daten, falls vorhanden in der linken Tabelle .
-
RIGHT OUTER JOIN
- holt Daten, falls vorhanden in der rechten Tabelle .
-
FULL OUTER JOIN
- holt Daten, wenn in einem der beiden Tabellen .
-
-
CROSS JOIN , wie der Name schon sagt, tut
[n X m]
, die alles mit allem verbindet.
Ähnlich Szenario, in dem wir einfach die Tabellen listen für (in derFROM
Klausel derSELECT
Anweisung) verbinden, Kommas, sie zu trennen.
Punkte zu beachten:
- Wenn Sie nur
JOIN
dann standardmäßig erwähnen, es ist einINNER JOIN
. - Ein
OUTER
beitreten mussLEFT
|RIGHT
|FULL
Sie können nicht einfach sagenOUTER JOIN
. - Sie können
OUTER
Stichwort fallen und einfach sagenLEFT JOIN
oderRIGHT JOIN
oderFULL JOIN
.
Für diejenigen, die diese in einer besseren Art und Weise visualisieren möchten, gehen Sie bitte auf diesen Link: Eine Visual Erklärung der SQL Joins
Was ist der Unterschied zwischen links verbinden und Links außen kommen?
Nichts . LEFT JOIN
und LEFT OUTER JOIN
gleichwertig sind.
Ich bin ein PostgreSQL DBA, so weit wie ich den Unterschied zwischen äußeren verstehen konnte oder nicht äußere Unterschied verbindet, ist ein Thema, das erhebliche Diskussionen rund um das Internet hat. Bis heute habe ich nie einen Unterschied zwischen diesen beiden; Also ging ich weiter und ich versuche, den Unterschied zwischen denen zu finden. Am Ende las ich die ganze Dokumentation darüber, und ich fand die Antwort für diesen,
Wenn Sie also auf Dokumentation aussehen (zumindest in PostgreSQL) Sie diesen Satz finden:
Mit anderen Worten:
LEFT JOIN
und LEFT OUTER JOIN
SIND GLEICH
RIGHT JOIN
und RIGHT OUTER JOIN
SIND GLEICH
Ich hoffe, es kann für diejenigen, die einen Beitrag sein, die immer noch versuchen, die Antwort zu finden.
Left Join
und Left Outer Join
sind ein und die gleichen . Erstere ist die Abkürzung für das letztere. Das gleiche kann über die Right Join
und Right Outer Join
Beziehung gesagt werden. Die Demonstration wird die Gleichheit illustriert. Arbeitsbeispiele von jeder Abfrage wurden über SQL Fiddle zur Verfügung gestellt. Dieses Tool wird für die Hände auf Manipulation der Abfrage ermöglichen.
Da
Ergebnisse
Recht Join und Right Outer Join
Ergebnisse
Ich finde es einfacher zu denken, schließt sich in der folgenden Reihenfolge:
- CROSS JOIN - ein kartesisches Produkt beiden Tabellen. ALL schließt sich hier beginnen
- INNER JOIN - ein CROSS JOIN mit einem Filter hinzugefügt.
- OUTER JOIN - ein INNER mit fehlenden Elementen JOIN (von links oder rechts Tabelle) danach. hinzugefügt
Bis ich dieses (relativ) einfaches Modell herausgefunden, JOINS waren immer ein bisschen mehr von einer schwarzen Kunst. Jetzt machen sie durchaus Sinn.
Hope, das hilft mehr als verwirrt es.
Warum sind links / rechts und LEFT OUTER / RIGHT OUTER gleich? Lassen Sie uns, warum dieses Vokabular erklären. Verstehen Sie, dass links und rechts werden spezifische Fälle der OUTER JOIN verbinden, und daher nichts anderes als OUTER links / rechts außen sein könnte. Die OUTER JOIN wird auch FULL OUTER im Gegensatz zu LINKS und RECHTS verbindet, die PARTIAL Ergebnisse der OUTER JOIN. 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 nun klar, warum diese Operationen Aliase haben, sowie es klar, nur 3 Fälle existieren, ist: innen, außen, CROSS. Mit zwei Unterfälle für die äußere. Das Vokabular, erklären die Art und Weise Lehrer dies, sowie einige oben genannten Antworten, machen es oft wie es aussieht viele verschiedene Arten von verbinden sind. Aber es ist eigentlich sehr einfach.
Um Ihre Frage zu beantworten
In SQL Server verbindet Syntax OUTER ist optional
Es ist in Msdn Artikel erwähnt: https: //msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx
So folgende Liste zeigt äquivalente Syntaxen verbinden 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 => ,
Stark Dotnet Mob Artice empfehlen: tritt in SQL Server
Es gibt im Wesentlichen drei Arten von JOIN
- Inner: holt Daten, die in beiden Tabellen vorhanden sind
- Nur JOIN bedeutet INNER JOIN
-
Außen: Es gibt drei Arten
- LEFT OUTER - - holt Daten nur in linker Tabelle & Anpassungsbedingung
- RIGHT OUTER - - holt Daten nur in der rechten Tabelle & Anpassungsbedingung
- FULL OUTER - - Daten holt präsentieren eine oder beide Tabelle
- (links oder rechts oder FULL) OUTER JOIN kann w / o Schreiben "OUTER" geschrieben werden
-
Kreuz verbindet: verbindet alles mit allem
Es gibt nur 3 schließt sich:
- A) Kreuz verbinden = cartesianischen (z: Tabelle A Tabelle B)
- B) Inner Join = JOIN (z: Tabelle A Join / Inner Table-Join B)
-
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.
Die syntaktische Zucker, macht es offensichtlich für den flüchtigen Leser, dass die Verbindung nicht ein innerer.
Gerade im Zusammenhang mit dieser Frage mag ich auch die 2 ‚Übernehmen‘ Operatoren schreiben:
JOINS :
-
INNER JOIN = JOIN
-
OUTER JOIN
-
LEFT OUTER JOIN = LEFT JOIN
-
RIGHT OUTER JOIN = RIGHT JOIN
-
FULL OUTER JOIN = FULL JOIN
-
-
CROSS JOIN
SELBST JOIN : Dies ist nicht gerade ein separater Join-Typ. Dies schließt sich grundsätzlich eine Tabelle mit sich selbst mit einem der oben verbindet. Aber ich fühlte es sich lohnt, im Kontext zu erwähnen Diskussionen JOIN, wie Sie diesen Begriff von vielen in der SQL Developer Community hören.
Übernehmen :
- CROSS GILT - ähnlich wie INNER JOIN (Aber hat Vorteile für jede Zeile der linken Tabelle etwas in der rechten Tabelle berechnen zu können hinzugefügt und würde nur die passenden Zeilen zurück)
- OUTER APPLY - ähnlich wie LEFT OUTER JOIN (aber hat für jede Zeile der linken Tabelle und würde wieder alle Zeilen aus dem linken Vorteile, dass sie etwas in der rechten Tabelle berechnen hinzugefügt Tabelle unabhängig von einem Spiel auf der rechten Tabelle)
https: // www. mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/ 10/23 / outer-apply-in-sQL-Server /
Real life Beispiel, wenn zu verwenden, OUTER / CROSS APPLY in SQL
Ich beantrage finden Betreiber sehr vorteilhaft, da sie eine bessere Leistung geben, als mit der gleichen Berechnung in einer Unterabfrage zu tun. Sie sind auch Ersatz vielen Analytical Funktionen in älteren Versionen von SQL Server. Deshalb glaube ich, dass nach bequem zu sein mit JOINS, ein SQL-Entwickler sollten versuchen, die GILT Betreiber zu lernen nächsten.