В чем разница между LEFT JOIN
и LEFT OUTER JOIN
?
В соответствии с документацией: FROM (Transact-SQL):
<join_type> ::=
[ { INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } } [ <join_hint> ] ]
JOIN
Ключевое слово OUTER
помечено как необязательное (заключено в квадратные скобки). В данном конкретном случае указание OUTER
или нет не имеет никакого значения. Обратите внимание, что хотя остальные элементы предложения join также помечены как необязательные, если не указывать их, то разница будет.
Например, вся часть типа в предложении 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 multiple tables on FROM line?.
В ответ на ваш вопрос нет разницы между левым присоединиться > и левое внешнее соединение, они точно так же сказал, что...
Внутреннее соединение - извлекает данные, если они присутствуют в обеих таблицах.
Внешнее соединение от 3 типы:
Левое внешнее соединение
- извлекает данные, если они присутствуют в левой таблице.
Правое внешнее соединение
- извлекает данные, если они присутствуют в правой таблице.
Полное внешнее соединение` - извлекает данные, если они присутствуют в любом из двух таблиц.
Перекрестное соединение, как следует из названия, делает [н х м.]
что соединяет все со всем.
Похож на сценарий, где мы просто перечисляет таблицы для работы (В С
пункт Выбрать
заявление), используя запятые для разделения их.
Моменты, следует отметить:
внутреннее соединение
.космическом
соединение должно влево
| вправо
| полный
вы не можете просто сказать внешнее
.внешний
ключевое слово и просто сказать, левое
и правое присоединиться " или " полное соединение
.Для тех, кто хочет визуализировать их в лучшую сторону, пожалуйста, перейдите по этой ссылке: Визуальное объяснение SQL присоединяется
В чем разница между левым объединением и левым внешним объединением?
Ничего. LEFT JOIN
и LEFT OUTER JOIN
эквивалентны.
Я'м а с PostgreSQL дБА, насколько я мог понять разницу между внешний или не внешний присоединяется разница-это тема, которая имеет значительные дискуссии в интернете. До сегодняшнего дня я никогда не видел разницы между этими двумя; поэтому я пошел дальше и я пытаюсь найти различие между ними. В конце концов, я прочитал всю документацию об этом, и я нашел ответ на этот,
Так что если вы посмотрите на документацию (по крайней мере в PostgreSQL) можно найти такую фразу:
Другими словами,
Левое
и `левое внешнее соединение-это же
`Право вступать " и " правого внешнего соединения-такие же
Я надеюсь, что это может быть вклад для тех, кто еще пытается найти ответ.
Левое
и левое внешнее соединение-это один И **же**. Первое сокращение за последние. То же самое можно сказать о взаимоотношениях
право присоединитьсяи
правое внешнее объединение`. Демонстрация будет иллюстрировать равенство. Рабочие примеры каждого запроса были предоставлены через в SQL скрипку. Этот инструмент позволит для рук на манипуляции запроса.
Дали
Левое и левое внешнее соединение
Результаты
Право на вступление и правое внешнее соединение
Результаты
Мне легче думать, что включается в следующем порядке:
Пока я не понял, эта (относительно) простая модель, присоединяется всегда были немного черного искусства. Теперь они делают совершенное чувство.
Надеюсь, что это помогает больше, чем ее смущает.
Почему левый/правый и левый наружный/наружный правый одинаковые? Позвольте'ы объяснить, почему этот словарь. Понимаю, что левый и правый соединяет конкретные случаи из внешнего соединения, и, следовательно, не мог'т быть ничем иным, кроме крайней левой и наружной правой. Внешнее соединение также называют полный наружный в отличие от левых и правых объединениях частично результаты внешнего соединения. Действительно:
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)
Теперь понятно, почему эти операции имеют псевдонимы, так же как понятно, существует только в 3 случаях: внутренний, наружный, крест. С двумя суб-чехлы для внешних. Лексика, как учителей объяснить этот, а также некоторые ответы выше, часто делают это выглядит как есть много различных типов соединения. Но это'ов на самом деле очень просто.
Чтобы ответить на ваш вопрос
в SQL Server дополнит синтаксис внешний является обязательным
Он упоминается в статье MSDN : https://msdn.microsoft.com/en-us/library/ms177634(в=в SQL.130).аспн
Поэтому следующий список показывает, присоединиться эквивалентных синтаксических конструкций С и без внешний
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
Других эквивалентных синтаксических конструкций
INNER JOIN => JOIN
CROSS JOIN => ,
Настоятельно рекомендуем dotnet ограничителя статьи моб : вступает в SQL сервер
Существует три типа внешнего соединения
Надеюсь, что это'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 должен попробовать научиться применять операторы следующего.