SQL Server에서 Left Join과 Left Outer Join
-
03-07-2019 - |
문제
차이점은 무엇입니까? LEFT JOIN
그리고 LEFT OUTER JOIN
?
해결책
문서에 따라 : (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
또한이 다른 질문에 남은 답변을 살펴보십시오. SQL은 라인에서 여러 테이블을 결합 하시겠습니까?.
다른 팁
귀하의 질문에 답변합니다 왼쪽 조인과 왼쪽 외부 조인 사이에는 차이가 없습니다. 정확히 동일합니다. 그 말 ...
최상위 수준에는 주로 3 가지 유형의 조인이 있습니다.
- 안의
- 밖의
- 십자가
내부 조인 - 두 테이블에있는 경우 데이터를 가져옵니다.
외부 조인 그렇습니다 3 유형 :
LEFT OUTER JOIN
- 왼쪽 테이블에있는 경우 데이터를 가져옵니다.RIGHT OUTER JOIN
- 오른쪽 테이블에있는 경우 데이터를 가져옵니다.FULL OUTER JOIN
- 두 테이블 중 하나에있는 경우 데이터를 가져옵니다.
크로스 조인, 이름에서 알 수 있듯이
[n X m]
그것은 모든 것에 모든 것을 합류합니다.
우리가 간단히 가입 할 테이블을 나열하는 시나리오와 유사합니다 (FROM
조항SELECT
명령문), 쉼표를 사용하여 분리합니다.
주목 할 사항 :
- 당신이 방금 언급한다면
JOIN
그런 다음 기본적으로 a입니다INNER JOIN
. - an
OUTER
가입은 있어야합니다LEFT
|RIGHT
|FULL
당신은 단순히 말할 수 없습니다OUTER JOIN
. - 당신은 떨어 뜨릴 수 있습니다
OUTER
키워드와 그냥 말하십시오LEFT JOIN
또는RIGHT JOIN
또는FULL JOIN
.
더 나은 방법으로이를 시각화하려는 사람들은이 링크로 이동하십시오.SQL 조인에 대한 시각적 설명
왼쪽 조인과 왼쪽 외부 조인의 차이점은 무엇입니까?
아무것도 아님. LEFT JOIN
그리고 LEFT OUTER JOIN
동등합니다.
나는 외부 또는 외부 결합의 차이를 이해할 수있는 한 PostgreSQL DBA입니다. 차이는 인터넷에서 상당한 토론을하는 주제입니다. 오늘까지 나는이 둘 사이의 차이를 본 적이 없다. 그래서 나는 더 나아 갔고 그것들의 차이를 찾으려고 노력합니다. 결국 나는 그것에 대한 전체 문서를 읽었고 이것에 대한 답을 찾았습니다.
따라서 문서를 살펴보면 (적어도 PostgreSQL에서)이 문구를 찾을 수 있습니다.
"단어 INNER
그리고 OUTER
모든 형태의 선택 사항입니다. INNER
기본값입니다. LEFT
, RIGHT
, 그리고 FULL
외부 조인을 암시합니다. "
다른 말로,
LEFT JOIN
그리고 LEFT OUTER JOIN
동일합니다
RIGHT JOIN
그리고 RIGHT OUTER JOIN
동일합니다
여전히 답을 찾으려고 노력하는 사람들에게는 그것이 기여할 수 있기를 바랍니다.
다음 순서로 조인을 생각하기가 더 쉽습니다.
- 크로스 조인 - 두 테이블의 데카르트 제품. 모든 합류가 여기에서 시작됩니다
- 내부 조인 - 필터가 추가 된 크로스 조인.
- 외부 조인 - 누락 된 요소 (왼쪽 또는 오른쪽 테이블에서)와의 내부 조인이 이후에 추가되었습니다.
이 (비교적) 간단한 모델을 알아낼 때까지, 결합은 항상 조금 더 흑인 예술이었습니다. 이제 그들은 완벽하게 이해됩니다.
이것이 혼란보다 더 도움이되기를 바랍니다.
왼쪽/오른쪽 및 왼쪽 외부/오른쪽 외부는 동일합니까? 왜이 어휘를 설명해 봅시다. 왼쪽과 오른쪽 결합은 외부 조인의 특정 사례이므로 왼쪽/바깥 쪽 오른쪽 외에는 다른 것이 될 수 없습니다. 외부 조인도 호출됩니다 가득한 왼쪽과 오른쪽 결합이 아닌 외부 부분적 외부 조인의 결과. 물론:
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(v=sql.130).aspx
따라서 다음 목록 표시는 동등한 구문에 가입합니다. 밖의
LEFT OUTER JOIN => LEFT JOIN
RIGHT OUTER JOIN => RIGHT JOIN
FULL OUTER JOIN => FULL JOIN
다른 동등한 구문
INNER JOIN => JOIN
CROSS JOIN => ,
Dotnet Mob Artice를 강력하게 추천합니다. SQL Server에서 조인합니다
주로 3 가지 유형의 조인이 있습니다
- 내부 : 두 테이블에 존재하는 데이터를 가져옵니다.
- 가입 만 내부 조인을 의미합니다
외부 : 세 가지 유형입니다
- 왼쪽 외부 - - 왼쪽 테이블 및 일치 조건에만 존재하는 데이터 가져 오기
- 오른쪽 외부 - 오른쪽 테이블 및 일치 조건에만 존재하는 데이터를 가져옵니다.
- 전체 외부 - - 데이터 가져 오기 일부 또는 두 테이블이 있습니다.
- (왼쪽 또는 오른쪽 또는 가득) 외부 조인은 "외부"를 쓰지 않고 작성할 수 있습니다.
크로스 조인 : 모든 것과 합류합니다
3 개의 조인 만 있습니다.
- a) 크로스 조인 = 직교 (예 : 표 A, 표 b)
- b) 내부 조인 = 조인 (예 : 테이블 A 조인/내부 조인 테이블 b)
c) 외부 조인 :
There are three type of outer join 1) Left Outer Join = Left Join 2) Right Outer Join = Right Join 3) Full Outer Join = Full Join
도움이되기를 바랍니다.
구문 설탕은 캐주얼 리더에게 조인이 내부가 아니라는 것을 더 분명하게 만듭니다.
이 질문의 맥락에서, 나는 2 '적용'연산자들도 게시하고 싶습니다.
가입:
내부 조인 = 가입
외부 조인
왼쪽 외부 조인 = 왼쪽 조인
오른쪽 외부 조인 = 오른쪽 조인
전체 외부 조인 = 전체 조인
크로스 조인
자가 합의: 이것은 정확히 별도의 교사가 아닙니다. 이것은 기본적으로 위의 조인 중 하나를 사용하여 테이블 자체로 결합됩니다. 그러나 SQL 개발자 커뮤니티의 많은 사람들 로부터이 용어를들을 수 있기 때문에 맥락에 가입 토론에서 언급 할 가치가 있다고 생각했습니다.
적용하다:
- 크로스 적용 - 내부 조인과 유사합니다 (그러나 왼쪽 테이블의 각 행에 오른쪽 테이블에 무언가를 계산할 수 있다는 이점이 추가되었으며 일치하는 행만 반환합니다).
- 외부 적용 - 왼쪽 외부 조인과 유사합니다 (그러나 왼쪽 테이블의 각 행에 오른쪽 테이블에서 무언가를 계산할 수 있다는 이점이 추가되었으며 오른쪽 테이블의 일치에 관계없이 왼쪽 테이블에서 모든 행을 반환합니다).
https://www.mssqltips.com/sqlservertip/1958/sql-server-cross-apply-and-uter-apply/
https://sqlhints.com/2016/10/23/outer-apply-in-sql-server/
적용 작업자는 하위 퀘스트에서 동일한 계산을 수행하는 것보다 더 나은 성능을 제공하기 때문에 매우 유익합니다. 또한 이전 버전의 SQL Server에서 많은 분석 기능을 대체합니다. 그렇기 때문에 조인에 편안한 후 한 SQL 개발자가 다음에 Apply Operator를 배우려고 노력해야한다고 생각합니다.