Вопрос: LEFT JOIN против LEFT OUTER JOIN в SQL Server


В чем разница между LEFT JOINа также LEFT OUTER JOIN?


1199


источник


Ответы:


Согласно документации: FROM (Transact-SQL) :

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

Ключевое слово OUTERпомечается как необязательный (заключен в квадратные скобки), и в этом случае это означает, что вы указываете его или нет, не имеет значения. Обратите внимание, что, в то время как другие элементы предложения соединения также отмечены как необязательные, их конечно, будет иметь значение.

Например, вся типовая часть JOINнеобязательно, в этом случае по умолчанию используется INNERесли вы просто указали JOIN, Другими словами, это законно:

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

Вот список эквивалентных синтаксисов:

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

Также взгляните на ответ, который я оставил на этом другом вопросе SO: SQL left join vs несколько таблиц в строке FROM? ,

enter image description here


1758



Чтобы ответить на ваш вопрос нет никакой разницы между LEFT JOIN   и LEFT OUTER JOIN, они точно такие же что сказал ...

На верхнем уровне существует в основном 3 типа объединений:

  1. ВНУТРЕННИЙ
  2. ВНЕШНИЙ
  3. ПЕРЕСЕКАТЬ

  1. ВНУТРЕННЕЕ СОЕДИНЕНИЕ - извлекает данные, если они присутствуют в обеих таблицах.

  2. ВНЕШНИЕ СОЕДИНЕНИЯ являются из 3 типы:

    1. LEFT OUTER JOIN- извлекает данные, если они присутствуют в левой таблице.
    2. RIGHT OUTER JOIN- извлекает данные, если они присутствуют в правой таблице.
    3. FULL OUTER JOIN- извлекает данные, если они присутствуют в любой из двух таблиц.
  3. ПЕРЕКРЕСТНЫЙ ПРИСОЕДИНЕНИЕ , как следует из названия, [n X m]что объединяет все ко всему.
    Подобно сценарию, в котором мы просто перечисляем таблицы для присоединения (в FROMположения SELECT), используя запятые для их разделения.


Следует отметить:

  • Если вы просто упомянете JOINто по умолчанию это INNER JOIN,
  • OUTERсоединение должно быть LEFT| RIGHT| FULLвы не можете просто сказать OUTER JOIN,
  • Вы можете отказаться OUTERключевое слово и просто сказать LEFT JOINили RIGHT JOINили FULL JOIN,

Для тех, кто хочет лучше их визуализировать, перейдите по этой ссылке: Визуальное объяснение соединений SQL


616



В чем разница между левым соединением и левым внешним соединением?

Ничего , LEFT JOINа также LEFT OUTER JOINэквивалентны.


271



Read more at Visual Representation of SQL Joins

Visual Representation of SQL Joins


116



I'm a PostgreSQL DBA, as far as I could understand the difference between outer or not outer joins difference is a topic that has considerable discussion all around the internet. Until today I never saw a difference between those two; So I went further and I try to find the difference between those. At the end I read the whole documentation about it and I found the answer for this,

So if you look on documentation (at least in PostgreSQL) you can find this phrase:

"The words INNER and OUTER are optional in all forms. INNER is the default; LEFT, RIGHT, and FULL imply an outer join."

In another words,

LEFT JOIN and LEFT OUTER JOIN ARE THE SAME

RIGHT JOIN and RIGHT OUTER JOIN ARE THE SAME

I hope it can be a contribute for those who are still trying to find the answer.


52



Nothing to say in words beside this:enter image description here


43



I find it easier to think of Joins in the following order:

  • CROSS JOIN - a Cartesian product of both tables. ALL joins begin here
  • INNER JOIN - a CROSS JOIN with a filter added.
  • OUTER JOIN - an INNER JOIN with missing elements (from either LEFT or RIGHT table) added afterward.

Until I figured out this (relatively) simple model, JOINS were always a bit more of a black art. Now they make perfect sense.

Hope this helps more than it confuses.


33



Left Join and Left Outer Join are one and the same. The former is the shorthand for the latter. The same can be said about the Right Join and Right Outer Join relationship. The demonstration will illustrate the equality. Working examples of each query have been provided via SQL Fiddle. This tool will allow for hands on manipulation of the query.

Given

enter image description here

Left Join and Left Outer Join

enter image description here

Results

enter image description here


Right Join and Right Outer Join

enter image description here

Results

enter image description here


33



Why are LEFT/RIGHT and LEFT OUTER/RIGHT OUTER the same? Let's explain why this vocabulary. Understand that LEFT and RIGHT joins are specific cases of the OUTER join, and therefore couldn't be anything else than OUTER LEFT/OUTER RIGHT. The OUTER join is also called FULL OUTER as opposed to LEFT and RIGHT joins that are PARTIAL results of the OUTER join. Indeed:

Table A | Table B     Table A | Table B      Table A | Table B      Table A | Table B
   1    |   5            1    |   1             1    |   1             1    |   1
   2    |   1            2    |   2             2    |   2             2    |   2
   3    |   6            3    |  null           3    |  null           -    |   -
   4    |   2            4    |  null           4    |  null           -    |   -
                        null  |   5             -    |   -            null  |   5
                        null  |   6             -    |   -            null  |   6

                      OUTER JOIN (FULL)     LEFT OUTER (partial)   RIGHT OUTER (partial)

It is now clear why those operations have aliases, as well as it is clear only 3 cases exist: INNER, OUTER, CROSS. With two sub-cases for the OUTER. The vocabulary, the way teachers explain this, as well as some answers above, often make it looks like there are lots of different types of join. But it's actually very simple.


25