Frage

Was ist der Unterschied zwischen LEFT JOIN und LEFT OUTER JOIN?

War es hilfreich?

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 .

eingeben Bild Beschreibung hier

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:

  1. INNER
  2. OUTER
  3. CROSS

  1. INNER JOIN -. Holt Daten, wenn in den beiden Tabellen

  2. OUTER JOIN ist von 3 Typen:

    1. LEFT OUTER JOIN - holt Daten, falls vorhanden in der linken Tabelle
    2. .
    3. RIGHT OUTER JOIN - holt Daten, falls vorhanden in der rechten Tabelle
    4. .
    5. FULL OUTER JOIN - holt Daten, wenn in einem der beiden Tabellen
    6. .
  3. 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 der FROM Klausel der SELECT Anweisung) verbinden, Kommas, sie zu trennen.


Punkte zu beachten:

  • Wenn Sie nur JOIN dann standardmäßig erwähnen, es ist ein INNER JOIN.
  • Ein OUTER beitreten muss LEFT | RIGHT | FULL Sie können nicht einfach sagen OUTER JOIN.
  • Sie können OUTER Stichwort fallen und einfach sagen LEFT JOIN oder RIGHT JOIN oder FULL 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:

"Die Worte INNER und OUTER sind in allen Formen optional. INNER ist die Standardeinstellung;. LEFT, RIGHT und FULL implizieren eine äußere Verknüpfung "

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

eingeben Bild Beschreibung hier

LEFT JOIN und Left Outer Join

eingeben Bild Beschreibung hier

Ergebnisse

eingeben Bild Beschreibung hier


Recht Join und Right Outer Join

eingeben Bild Beschreibung hier

Ergebnisse

eingeben Bild Beschreibung hier

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 eingeben Bild Beschreibung hier

Es gibt im Wesentlichen drei Arten von JOIN

  1. Inner: holt Daten, die in beiden Tabellen vorhanden sind
    • Nur JOIN bedeutet INNER JOIN
  2. 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
  3. 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 :

  1. INNER JOIN = JOIN

  2. OUTER JOIN

    • LEFT OUTER JOIN = LEFT JOIN

    • RIGHT OUTER JOIN = RIGHT JOIN

    • FULL OUTER JOIN = FULL JOIN

  3. 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 :

  1. 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)
  2. 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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top