Jaka jest różnica między LEFT JOIN
a LEFT OUTER JOIN
?
Zgodnie z dokumentacją: FROM (Transact-SQL):
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Słowo kluczowe OUTER
jest oznaczone jako opcjonalne (ujęte w nawiasy kwadratowe). W tym konkretnym przypadku, to czy podasz OUTER
czy nie, nie robi żadnej różnicy. Zauważ, że podczas gdy inne elementy klauzuli join są również oznaczone jako opcjonalne, pominięcie ich będzie robiło różnicę.
Na przykład, cała część type klauzuli JOIN
jest opcjonalna, w tym przypadku domyślnie jest to INNER
, jeśli tylko podasz JOIN
. Innymi słowy, jest to legalne:
SELECT *
FROM A JOIN B ON A.X = B.Y
Oto'lista równoważnych składni:
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
Spójrz także na odpowiedź, którą zostawiłem na to inne pytanie SO: SQL left join vs multiple tables on FROM line?.
Jaka jest różnica między złączeniem lewym a lewym zewnętrznym?
Nic. LEFT JOIN
i LEFT OUTER JOIN
są równoważne.