Jaka jest różnica między LEFT JOIN
i LEFT OUTER JOIN
?
sql-server
tsql
left-join
outer-join
KG Sosa
źródło
źródło
OUTER
kluczowe jest opcjonalne.Odpowiedzi:
Zgodnie z dokumentacją: FROM (Transact-SQL) :
Słowo kluczowe
OUTER
jest oznaczone jako opcjonalne (ujęte w nawias kwadratowy). W tym konkretnym przypadku, czy podaszOUTER
czy nie, nie ma znaczenia. Należy zauważyć, że podczas gdy inne elementy dołączyć klauzuli jest również oznaczone jako opcjonalne, pozostawiając je na zewnątrz będzie zrobić różnicę.Na przykład cała część typu
JOIN
klauzuli jest opcjonalna, w takim przypadku domyślną wartością jest,INNER
jeśli tylko ją określiszJOIN
. Innymi słowy, jest to legalne:Oto lista równoważnych składni:
Spójrz także na odpowiedź, którą zostawiłem na to inne SO pytanie: SQL pozostawił złączenie vs wiele tabel na linii FROM? .
źródło
INNER JOIN
po prawej i tylkoJOIN
po lewej stronie na liście ekwiwalentów?JOIN
s.Na najwyższym poziomie są głównie 3 rodzaje złączeń:
DOŁĄCZ DO WEWNĘTRZNEGO - pobiera dane, jeśli występują w obu tabelach.
DOŁĄCZ DO ZEWNĘTRZNEGO są 3 rodzaje:
LEFT OUTER JOIN
- pobiera dane, jeśli występują w lewej tabeli.RIGHT OUTER JOIN
- pobiera dane, jeśli występują w odpowiedniej tabeli.FULL OUTER JOIN
- pobiera dane, jeśli występują w jednej z dwóch tabel.CROSS JOIN , jak sama nazwa wskazuje,
[n X m]
łączy to wszystko ze wszystkim.Podobnie do scenariusza, w którym po prostu podajemy tabele do łączenia (w
FROM
klauzuliSELECT
instrukcji), używając przecinków, aby je rozdzielić.Punkty do odnotowania:
JOIN
to domyślnie jest toINNER JOIN
.OUTER
Dołączyć musi byćLEFT
|RIGHT
|FULL
nie możesz po prostu powiedziećOUTER JOIN
.OUTER
słowo kluczowe i po prostu powiedziećLEFT JOIN
lubRIGHT JOIN
lubFULL JOIN
.Dla tych, którzy chcą wizualizować je w lepszy sposób, przejdź do tego linku: Objaśnienie połączeń SQL
źródło
CROSS JOIN
to samo coFULL JOIN
?Cross Join
iFull Outer Join
... w pewien sposób wydaje się podobny.Nic .
LEFT JOIN
iLEFT OUTER JOIN
są równoważne.źródło
OUTER
jest to opcjonalne.Jestem DBA PostgreSQL, o ile mogłem zrozumieć różnicę między zewnętrznymi lub zewnętrznymi połączeniami Różnica jest tematem, który ma znaczną dyskusję w całym Internecie. Do dzisiaj nigdy nie widziałem różnicy między tymi dwoma; Poszedłem więc dalej i staram się znaleźć różnicę między nimi. Na koniec przeczytałem całą dokumentację na ten temat i znalazłem odpowiedź na to,
Więc jeśli spojrzysz na dokumentację (przynajmniej w PostgreSQL), możesz znaleźć tę frazę:
„Słowa
INNER
iOUTER
są opcjonalne we wszystkich formach.INNER
Jest domyślny;LEFT
,RIGHT
iFULL
sugerować outer join”.Innymi słowy,
LEFT JOIN
i są takieLEFT OUTER JOIN
sameRIGHT JOIN
i są takieRIGHT OUTER JOIN
sameMam nadzieję, że może to być pomocne dla tych, którzy wciąż próbują znaleźć odpowiedź.
źródło
Left Join
iLeft Outer Join
są jednym i tym samym . Ten pierwszy jest skrótem od drugiego. To samo można powiedzieć o związkuRight Join
iRight Outer Join
związku. Demonstracja zilustruje równość. Robocze przykłady każdego zapytania zostały dostarczone przez SQL Fiddle . To narzędzie pozwoli na manipulowanie zapytaniem.Dany
Połącz lewy i lewy zewnętrzny
Wyniki
Right Join i Right Outer Join
Wyniki
źródło
Łatwiej jest mi myśleć o połączeniach w następującej kolejności:
Dopóki nie doszedłem do tego (relatywnie) prostego modelu, ŁĄCZENIA były zawsze bardziej czarną sztuką. Teraz mają doskonały sens.
Mam nadzieję, że to pomaga bardziej niż myli.
źródło
Dlaczego LEWE / PRAWE i LEWE ZEWNĘTRZNE / PRAWE ZEWNĘTRZNE są takie same? Wyjaśnijmy, dlaczego to słownictwo. Zrozum, że złączenia LEWE i PRAWE są szczególnymi przypadkami złączenia ZEWNĘTRZNEGO, a zatem nie może być niczym innym niż ZEWNĘTRZNY LEWY / ZEWNĘTRZNY PRAWY. Złączenie OUTER jest również nazywane PEŁNYM ZEWNĘTRZNYM, w przeciwieństwie do złączeń LEWY i PRAWY, które są CZĘŚCIOWYMI wynikami złączenia ZEWNĘTRZNEGO. W rzeczy samej:
Teraz jest jasne, dlaczego te operacje mają aliasy, a także jasne, że istnieją tylko 3 przypadki: WEWNĘTRZNE, ZEWNĘTRZNE, KRZYŻOWE. Z dwoma pod-skrzynkami dla OUTER. Słownictwo, sposób, w jaki tłumaczą to nauczyciele, a także niektóre powyższe odpowiedzi często sprawiają, że wygląda na to, że istnieje wiele różnych rodzajów łączenia. Ale w rzeczywistości jest to bardzo proste.
źródło
JOIN
implikujeINNER JOIN
” pasuje do twojego rozumowania zewnętrznego słownika łączenia?Odpowiedzieć na Twoje pytanie
Jest wspomniany w artykule msdn: https://msdn.microsoft.com/en-us/library/ms177634(v=sql.130).aspx
Tak więc poniższa lista pokazuje łączenie równoważnych składni zi bez parametru OUTER
Inne równoważne składnie
Gorąco polecam Dotnet Mob Artice: Dołącza do Sql Server
źródło
Istnieją tylko 3 sprzężenia:
C) Łączenie zewnętrzne:
Mam nadzieję, że to pomoże.
źródło
Istnieją głównie trzy rodzaje DOŁĄCZENIA
Zewnętrzne: są trzech rodzajów
Cross Join: łączy wszystko ze wszystkim
źródło
Cukier syntaktyczny sprawia, że zwykły czytelnik staje się bardziej oczywisty, że połączenie nie jest wewnętrznym.
źródło
Właśnie w kontekście tego pytania chcę również opublikować 2 operatorów „ZASTOSUJ”:
ŁĄCZY :
DOŁĄCZ DO WEWNĘTRZNEGO = DOŁĄCZ
DOŁĄCZ DO ZEWNĄTRZ
LEWE DOŁĄCZENIE ZEWNĘTRZNE = LEWE DOŁĄCZENIE
PRAWE DOŁĄCZENIE DO ZEWNĘTRZNEGO = PRAWE DOŁĄCZENIE
FULL OUTER JOIN = PEŁNE DOŁĄCZENIE
KRZYŻ DOŁĄCZ
SAMOŁĄCZENIE : To nie jest dokładnie osobny typ złączenia. Jest to w zasadzie łączenie tabeli z samym sobą za pomocą jednego z powyższych sprzężeń. Ale czułem, że warto wspomnieć w kontekście dyskusji JOIN, ponieważ usłyszysz ten termin od wielu członków społeczności SQL Developer.
ZASTOSUJ :
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-outer-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
Przykład z życia, kiedy należy użyć ZEWNĘTRZNEJ / KRZYŻOWEJ APLIKACJI w SQL
Uważam, że operator APPLY jest bardzo korzystny, ponieważ zapewnia lepszą wydajność niż konieczność wykonywania tych samych obliczeń w podzapytaniu. Zastępują one także wiele funkcji analitycznych w starszych wersjach SQL Server. Dlatego uważam, że po zapoznaniu się z JOINS jeden programista SQL powinien następnie spróbować nauczyć się operatorów APPLY.
źródło