Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

LEFT JOIN vs. LEFT OUTER JOIN no SQL Server


Conforme a documentação:FROM (Transact-SQL):
<join_type> ::= 
    [ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
    JOIN

A palavra-chave OUTER é marcado como opcional (entre colchetes). Neste caso específico, se você especificar OUTER ou não não faz diferença. Observe que enquanto os outros elementos da cláusula join também são marcados como opcionais, deixando eles fora vai faça a diferença.

Por exemplo, toda a parte de tipo do JOIN cláusula é opcional, neste caso o padrão é INNER se você apenas especificar JOIN . Em outras palavras, isso é legal:
SELECT *
FROM A JOIN B ON A.X = B.Y

Aqui está uma lista de sintaxes equivalentes:
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

Também dê uma olhada na resposta que deixei nesta outra pergunta SO:SQL left join vs multiple tables on FROM line?.