Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

LEFT JOIN vs. LEFT OUTER JOIN in SQL Server

Come da documentazione:DA (Transact-SQL):

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

La parola chiave OUTER è contrassegnato come opzionale (racchiuso tra parentesi quadre). In questo caso specifico, se specifichi OUTER o no non fa differenza. Nota che mentre anche gli altri elementi della clausola join sono contrassegnati come opzionali, lasciando li fuori farà fare la differenza.

Ad esempio, l'intera parte del tipo di JOIN la clausola è facoltativa, nel qual caso l'impostazione predefinita è INNER se specifichi semplicemente JOIN . In altre parole, questo è legale:

SELECT *
FROM A JOIN B ON A.X = B.Y

Ecco un elenco di sintassi equivalenti:

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

Dai anche un'occhiata alla risposta che ho lasciato su quest'altra domanda SO:SQL left join vs più tabelle sulla linea FROM?.