В чем разница между LEFT JOIN
и LEFT OUTER JOIN
?
sql-server
tsql
left-join
outer-join
КГ Соса
источник
источник
OUTER
Необязательное ключевое слово.Ответы:
Согласно документации: ОТ (Transact-SQL) :
Ключевое слово
OUTER
помечается как необязательное (заключено в квадратные скобки). В этом конкретном случае, независимо от того, указали вы этоOUTER
или нет, не имеет значения. Обратите внимание, что, хотя другие элементы предложения join также помечены как необязательные, их исключение будет иметь значение.Например, вся типовая часть
JOIN
предложения является необязательной, в этом случае по умолчанию используется значение,INNER
если вы просто укажетеJOIN
. Другими словами, это законно:Вот список эквивалентных синтаксисов:
Также взгляните на ответ, который я оставил на этот другой SO вопрос: SQL оставил соединение против нескольких таблиц в строке ОТ? ,
источник
INNER JOIN
справа иJOIN
слева в списке эквивалентов?JOIN
s.На верхнем уровне в основном 3 типа соединений:
INNER JOIN - извлекает данные, если они присутствуют в обеих таблицах.
НАРУЖНЫЕ СОЕДИНЕНИЯ имеют 3 типа:
LEFT OUTER JOIN
- извлекает данные, если они присутствуют в левой таблице.RIGHT OUTER JOIN
- извлекает данные, если они присутствуют в правой таблице.FULL OUTER JOIN
- извлекает данные, если они присутствуют в одной из двух таблиц.CROSS JOIN , как следует из названия,
[n X m]
соединяет все со всем.Аналогично сценарию, в котором мы просто перечисляем таблицы для объединения (в
FROM
разделеSELECT
оператора), используя запятые для их разделения.Очки, которые следует отметить:
JOIN
то по умолчанию этоINNER JOIN
.OUTER
Присоединиться должен бытьLEFT
|RIGHT
|FULL
Вы не можете просто сказатьOUTER JOIN
.OUTER
ключевое слово и просто сказатьLEFT JOIN
илиRIGHT JOIN
илиFULL JOIN
.Для тех, кто хочет визуализировать их лучше, перейдите по этой ссылке: Наглядное объяснение соединений SQL
источник
CROSS JOIN
же, какFULL JOIN
?Cross Join
иFull Outer Join
... в некотором роде кажется похожим.Ничего .
LEFT JOIN
иLEFT OUTER JOIN
эквивалентны.источник
OUTER
это необязательно.Я - администратор PostgreSQL, насколько я понимаю, разница между внешними или не внешними соединениями - это тема, которая широко обсуждается в Интернете. До сегодняшнего дня я никогда не видел разницы между этими двумя; Поэтому я пошел дальше, и я пытаюсь найти разницу между ними. В конце я прочитал всю документацию об этом, и я нашел ответ для этого,
Так что, если вы посмотрите на документацию (по крайней мере, в PostgreSQL), вы можете найти эту фразу:
«Слова
INNER
и неOUTER
являются обязательными во всех формах.INNER
Является по умолчанию,LEFT
,RIGHT
иFULL
подразумевает внешнее соединение.»Другими словами,
LEFT JOIN
и теLEFT OUTER JOIN
жеRIGHT JOIN
и теRIGHT OUTER JOIN
жеЯ надеюсь, что это может помочь тем, кто все еще пытается найти ответ.
источник
Left Join
иLeft Outer Join
одно и то же . Первое является сокращением для последнего. То же самое можно сказать оRight Join
иRight Outer Join
отношениях. Демонстрация проиллюстрирует равенство. Рабочие примеры каждого запроса были предоставлены через SQL Fiddle . Этот инструмент позволит на руки манипулировать запросом.Данный
Левое соединение и левое внешнее соединение
Результаты
Правое соединение и правое внешнее соединение
Результаты
источник
Мне кажется, что в Joins проще думать в следующем порядке:
Пока я не разобрался в этой (относительно) простой модели, JOINS всегда были чем-то вроде черного искусства. Теперь они имеют смысл.
Надеюсь, это поможет больше, чем смущает.
источник
Почему ВЛЕВО / ВПРАВО и ВЛЕВО НАРУЖНО / ВПРАВО наружу одинаковы? Давайте объясним, почему этот словарь. Поймите, что соединения LEFT и RIGHT являются особыми случаями соединения OUTER, и поэтому не могут быть ничем иным, как OUTER LEFT / OUTER RIGHT. Соединение OUTER также называется FULL OUTER, в отличие от соединений LEFT и RIGHT, которые являются ЧАСТИЧНЫМИ результатами соединения OUTER. Верно:
Теперь понятно, почему эти операции имеют псевдонимы, а также ясно, что существуют только 3 случая: INNER, OUTER, CROSS. С двумя кейсами для ВНЕШНЕГО. Словарный запас, то, как учителя объясняют это, а также некоторые ответы выше, часто создают впечатление, что существует множество различных типов объединения. Но на самом деле все очень просто.
источник
JOIN
словосочетаниюINNER JOIN
«внешний вид соединения» внешнему соединению?Ответить на ваш вопрос
Упоминается в статье MSDN: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx
Таким образом, следующий список показывает эквивалентные синтаксисы соединения с и без OUTER
Другие эквивалентные синтаксисы
Настоятельно рекомендуем Dotnet Mob Artice: присоединяется к Sql Server
источник
Есть только 3 соединения:
В) Наружное соединение:
Надеюсь, это поможет.
источник
Есть в основном три типа JOIN
Наружный: бывают трех типов
Cross Join: объединяет все со всем
источник
Синтаксический сахар делает для обычного читателя более очевидным, что соединение не является внутренним.
источник
Именно в контексте этого вопроса я хочу также опубликовать 2 оператора 'APPLY':
СОЕДИНЯЕТСЯ :
INNER JOIN = ПРИСОЕДИНИТЬСЯ
НАРУЖНОЕ СОЕДИНЕНИЕ
LEFT OUTER JOIN = ЛЕВОЕ СОЕДИНЕНИЕ
RIGHT OUTER JOIN = ПРАВИЛЬНОЕ СОЕДИНЕНИЕ
FULL OUTER JOIN = ПОЛНОЕ СОЕДИНЕНИЕ
CROSS JOIN
САМОСОЕДИНЕНИЕ : Это не совсем отдельный тип соединения. Это в основном соединение таблицы с самим собой с помощью одного из вышеуказанных соединений. Но я чувствовал, что стоит упомянуть в контексте обсуждения JOIN, поскольку вы услышите этот термин от многих в сообществе разработчиков SQL.
ПРИМЕНИТЬ :
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
Пример из реальной жизни, когда использовать OUTER / CROSS APPLY в SQL
Я считаю оператор APPLY очень полезным, поскольку он дает лучшую производительность, чем выполнение тех же вычислений в подзапросе. Они также являются заменой многих аналитических функций в более старых версиях SQL Server. Вот почему я считаю, что после того, как освоиться с JOINS, один из разработчиков SQL должен попытаться изучить операторы APPLY.
источник