Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

LEFT JOIN vs. LEFT OUTER JOIN in SQL Server

Gemäß der Dokumentation:FROM (Transact-SQL):

<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN

Das Schlüsselwort OUTER ist als optional gekennzeichnet (in eckige Klammern gesetzt). In diesem speziellen Fall, ob Sie OUTER angeben oder nicht macht keinen unterschied. Beachten Sie, dass die anderen Elemente der Join-Klausel zwar ebenfalls als optional gekennzeichnet sind, aber sie belassen werden aus wird einen Unterschied machen.

Zum Beispiel der gesamte Typ-Teil des JOIN -Klausel ist optional, in diesem Fall ist der Standardwert INNER wenn Sie einfach JOIN angeben . Mit anderen Worten, dies 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

Sehen Sie sich auch die Antwort an, die ich auf diese andere SO-Frage hinterlassen habe:SQL left join vs multiple tables on FROM line?.