sql-server - inner - what is the difference between left join and left outer join




LEFT JOIN vs LEFT OUTER JOIN no SQL Server (11)

Para responder à sua pergunta, não há diferença entre o LEFT JOIN e o LEFT OUTER JOIN, são exatamente os mesmos que disseram ...

No nível superior, existem principalmente 3 tipos de junções:

  1. INTERIOR
  2. EXTERIOR
  3. CRUZ
  1. INNER JOIN - busca dados se presentes nas duas tabelas.

  2. OUTER JOIN são de 3 tipos:

    1. LEFT OUTER JOIN - busca dados se presentes na tabela da esquerda.
    2. RIGHT OUTER JOIN - busca dados se presentes na tabela à direita.
    3. FULL OUTER JOIN - busca dados se presentes em qualquer uma das duas tabelas.
  3. CROSS JOIN , como o nome sugere, faz [n X m] que une tudo a tudo.
    Semelhante ao cenário em que simplesmente listamos as tabelas para unir (na cláusula FROM da SELECT ), usando vírgulas para separá-las.

Pontos a serem notados:

  • Se você acabou de mencionar o JOIN , por padrão, é um INNER JOIN .
  • Uma associação OUTER deve ser LEFT | RIGHT | FULL você não pode simplesmente dizer OUTER JOIN .
  • Você pode eliminar a palavra-chave OUTER e apenas dizer LEFT JOIN ou RIGHT JOIN ou FULL JOIN .

Para aqueles que querem visualizá-los de uma maneira melhor, por favor acesse este link: Uma Explicação Visual de Junções SQL

Qual é a diferença entre LEFT JOIN e LEFT OUTER JOIN ?


Qual é a diferença entre junção esquerda e junção externa esquerda?

Nada . LEFT JOIN e LEFT OUTER JOIN são equivalentes.


Existem apenas 3 junções:

  • A) Cruzar Junta = Cartesiana (Por exemplo: Tabela A, Tabela B)
  • B) Junção Interna = JOIN (Por Exemplo: Tabela A Junta / Junta Interna Tabela B)
  • C) junção externa:

       There are three type of outer join
       1)  Left Outer Join     = Left Join
       2)  Right Outer Join    = Right Join
       3)  Full Outer Join     = Full Join    

Espero que ajude.


Açúcar sintático, torna mais óbvio para o leitor casual que a junção não é interna.


Como já mencionado aqui, não há diferença. O mundo chave OUTER poderia ser removido do dicionário de palavras-chave SQL sem perdermos o poder expressional nas consultas que podemos escrever.

Além disso, não precisamos das palavras-chave RIGHT e LEFT pois apenas uma delas é suficiente. Isso ocorre porque SELECT * FROM A RIGHT JOIN B on A.ID = B.ID é exatamente igual a SELECT * FROM B LEFT JOIN A on A.ID = B.ID Eu encontrei todos esses termos extras confundindo estudantes e novatos.


Conforme a documentação: FROM (Transact-SQL) :

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

A palavra-chave OUTER é marcada como opcional (entre colchetes), e o que isso significa nesse caso é que, independentemente de você especificá-la ou não, não faz diferença. Observe que, embora os outros elementos da cláusula de junção também sejam marcados como opcionais, deixá- los fora obviamente fará diferença.

Por exemplo, todo o tipo de parte da cláusula JOIN é opcional, caso em que o padrão é INNER se você 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: SQL left join vs várias tabelas na linha FROM? .


Eu sou um DBA PostgreSQL, tanto quanto eu poderia entender a diferença entre junções externas ou não externas é um tópico que tem discussão considerável em toda a internet. Até hoje nunca vi diferença entre esses dois; Então fui mais longe e tentei encontrar a diferença entre eles. No final eu li toda a documentação sobre isso e achei a resposta para isso,

Então, se você olhar na documentação (pelo menos no PostgreSQL), você pode encontrar esta frase:

"As palavras INNER e OUTER são opcionais em todos os formatos. INNER é o padrão; LEFT , RIGHT e FULL implicam uma junção externa."

Em outras palavras,

LEFT JOIN e LEFT JOIN LEFT OUTER JOIN SÃO AS MESMAS

RIGHT JOIN E RIGHT OUTER JOIN PARTE EXTERNA SÃO AS MESMAS

Espero que possa ser uma contribuição para aqueles que ainda estão tentando encontrar a resposta.


Existem basicamente três tipos de JOIN

  1. Inner: busca dados, que estão presentes em ambas as tabelas
    • Apenas JOIN significa INNER JOIN
  2. Outer: são de três tipos

    • LEFT OUTER - - busca dados presentes apenas na tabela à esquerda e na condição correspondente
    • RIGHT OUTER - - busca dados presentes apenas na tabela à direita e na condição correspondente
    • FULL OUTER - - os dados de busca apresentam uma ou ambas as tabelas
    • (ESQUERDA ou DIREITA ou CHEIA) OUTER JOIN pode ser escrito sem escrever "EXTERIOR"
  3. Cross Join: junta tudo a tudo


Nada a dizer em palavras além disso:


Para responder sua pergunta

No Sql Server une sintaxe OUTER é opcional

É mencionado no artigo do MSDN: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx

Então, a lista a seguir mostra as sintaxes equivalentes com e sem OUTER

LEFT OUTER JOIN => LEFT JOIN
RIGT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN

Outras sintaxes equivalentes

INNER JOIN => JOIN
CROSS JOIN => ,

Recomendamos vivamente o Dotnet Mob Artice: junta - se no Sql Server


Left Join e Left Outer Join são um e o mesmo . O primeiro é a abreviação do segundo. O mesmo pode ser dito sobre o relacionamento Right Join e Right Outer Join . A demonstração irá ilustrar a igualdade. Exemplos de trabalho de cada consulta foram fornecidos via SQL Fiddle . Esta ferramenta permitirá a manipulação manual da consulta.

Dado

Junção Esquerda e Junção Externa Esquerda

Resultados

Junção Direita e Junção Externa Direita

Resultados





outer-join