Qual è la differenza tra LEFT JOIN
e LEFT OUTER JOIN
?
Come da documentazione: FROM (Transact-SQL):
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
La parola chiave OUTER
è marcata come opzionale (racchiusa tra parentesi quadre). In questo caso specifico, specificare o meno OUTER
non fa alcuna differenza. Notate che mentre gli altri elementi della clausola di unione sono anch'essi marcati come opzionali, lasciare fuori loro farà* differenza.
Per esempio, l'intera parte type della clausola JOIN
è opzionale, nel qual caso il default è INNER
se si specifica solo JOIN
. In altre parole, questo è legale:
SELECT *
FROM A JOIN B ON A.X = B.Y
Ecco una lista 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 questa altra domanda SO: SQL left join vs più tabelle su FROM line?.
Qual è la differenza tra left join e left outer join?
Nulla. LEFT JOIN
e LEFT OUTER JOIN
sono equivalenti.