Дополнительно
LEFT JOIN против LEFT OUTER JOIN в SQL Server
В чем разница между LEFT JOIN
и LEFT OUTER JOIN
?
1503
12
В чем разница между LEFT JOIN
и LEFT OUTER JOIN
?
В соответствии с документацией: FROM (Transact-SQL):
Ключевое слово
OUTER
помечено как необязательное (заключено в квадратные скобки). В данном конкретном случае указаниеOUTER
или нет не имеет никакого значения. Обратите внимание, что хотя остальные элементы предложения join также помечены как необязательные, если не указывать их, то разница будет.Например, вся часть типа в предложении
JOIN
является необязательной, и в этом случае по умолчанию будетINNER
, если вы просто укажетеJOIN
. Другими словами, это законно:Вот'список эквивалентных синтаксисов:
Также посмотрите на ответ, который я оставил на другой вопрос SO: SQL left join vs multiple tables on FROM line?.
На верхнем уровне есть в основном 3 типа соединений:
Внутреннее соединение - извлекает данные, если они присутствуют в обеих таблицах.
Внешнее соединение от 3 типы:
Левое внешнее соединение
- извлекает данные, если они присутствуют в левой таблице.Правое внешнее соединение
- извлекает данные, если они присутствуют в правой таблице.Полное внешнее соединение` - извлекает данные, если они присутствуют в любом из двух таблиц.
Перекрестное соединение, как следует из названия, делает
[н х м.]
что соединяет все со всем. Похож на сценарий, где мы просто перечисляет таблицы для работы (ВС
пунктВыбрать
заявление), используя запятые для разделения их.Моменты, следует отметить:
внутреннее соединение
.космическом
соединение должновлево
|вправо
|полный
вы не можете просто сказатьвнешнее
.внешний
ключевое слово и просто сказать,левое
иправое присоединиться " или " полное соединение
.Для тех, кто хочет визуализировать их в лучшую сторону, пожалуйста, перейдите по этой ссылке: Визуальное объяснение SQL присоединяется
Ничего.
LEFT JOIN
иLEFT OUTER JOIN
эквивалентны.Я'м а с PostgreSQL дБА, насколько я мог понять разницу между внешний или не внешний присоединяется разница-это тема, которая имеет значительные дискуссии в интернете. До сегодняшнего дня я никогда не видел разницы между этими двумя; поэтому я пошел дальше и я пытаюсь найти различие между ними. В конце концов, я прочитал всю документацию об этом, и я нашел ответ на этот,
Так что если вы посмотрите на документацию (по крайней мере в PostgreSQL) можно найти такую фразу:
"от слова
внутренний
ивнешний
являются обязательными во всех формах. "Внутренних" является значением по умолчанию;влево
,вправо
, иполный
подразумевает внешнего соединения.&и"Другими словами,
Левое
и `левое внешнее соединение-это же`Право вступать " и " правого внешнего соединения-такие же
Я надеюсь, что это может быть вклад для тех, кто еще пытается найти ответ.
Левое
илевое внешнее соединение-это один И **же**. Первое сокращение за последние. То же самое можно сказать о взаимоотношениях
право присоединитьсяи
правое внешнее объединение`. Демонстрация будет иллюстрировать равенство. Рабочие примеры каждого запроса были предоставлены через в SQL скрипку. Этот инструмент позволит для рук на манипуляции запроса.Дали
Левое и левое внешнее соединение
Результаты
Право на вступление и правое внешнее соединение
Результаты
Мне легче думать, что включается в следующем порядке:
Пока я не понял, эта (относительно) простая модель, присоединяется всегда были немного черного искусства. Теперь они делают совершенное чувство.
Надеюсь, что это помогает больше, чем ее смущает.
Почему левый/правый и левый наружный/наружный правый одинаковые? Позвольте'ы объяснить, почему этот словарь. Понимаю, что левый и правый соединяет конкретные случаи из внешнего соединения, и, следовательно, не мог'т быть ничем иным, кроме крайней левой и наружной правой. Внешнее соединение также называют полный наружный в отличие от левых и правых объединениях частично результаты внешнего соединения. Действительно:
Теперь понятно, почему эти операции имеют псевдонимы, так же как понятно, существует только в 3 случаях: внутренний, наружный, крест. С двумя суб-чехлы для внешних. Лексика, как учителей объяснить этот, а также некоторые ответы выше, часто делают это выглядит как есть много различных типов соединения. Но это'ов на самом деле очень просто.
Чтобы ответить на ваш вопрос
Он упоминается в статье MSDN : https://msdn.microsoft.com/en-us/library/ms177634(в=в SQL.130).аспн
Поэтому следующий список показывает, присоединиться эквивалентных синтаксических конструкций С и без внешний
Других эквивалентных синтаксических конструкций
Настоятельно рекомендуем dotnet ограничителя статьи моб : вступает в SQL сервер
Есть только 3 соединения:
Существует три типа внешнего соединения
Надеюсь, что это'd помогите.
В основном существуют три типа соединения
Синтаксический сахар, делающий более очевидным для случайного читателя, что соединение не является внутренним.
Просто в контексте данного вопроса, я хочу разместить на 2 'применить' операторы, а также:
Вступление:
СОЕДИНЕНИЕ INNER = ПРИСОЕДИНЕНИЕ
ВНЕШНЕЕ СОЕДИНЕНИЕ
ЛЕВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ = ЛЕВОЕ СОЕДИНЕНИЕ
ПРАВОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ = ПРАВО НА ВСТУПЛЕНИЕ
ПОЛНОЕ ВНЕШНЕЕ СОЕДИНЕНИЕ = ПОЛНОЕ СОЕДИНЕНИЕ
Самосоединение: это не совсем отдельный тип соединения. Это, по сути, присоединившись к таблице с помощью одного из указанных выше соединений. Но я чувствовал, что это стоит упомянуть в контексте присоединиться к дискуссии, так как вы будете слышать этот термин от многих в сообществе разработчиков 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/
https://stackoverflow.com/questions/9275132/real-life-example-when-to-use-outer-cross-apply-in-sql
Я нахожу применить оператор очень полезными, поскольку они дают лучшую производительность, чем делать те же вычисления в подзапросе. Они также замена многих аналитических функций в старых версиях SQL сервера. Именно поэтому я считаю, что после того, как комфортно присоединяется, один разработчик SQL должен попробовать научиться применять операторы следующего.