SQL Server:크로스 조인(CROSS JOIN)과 풀 아우터 조인(FULL OUTER JOIN)의 차이점은 무엇입니까?
SQL Server에서의 CROSS JOIN과 FULL OUTER JOIN의 차이점은 무엇입니까?
똑같아요, 아니에요?설명해 주세요.이 중 하나를 언제 사용할 수 있습니까?
A CROSS JOIN
는 두 테이블 사이에 데카르트 곱을 생성하여 모든 행의 가능한 모든 조합을 반환합니다.ON
모든 것에 모든 것을 결합하는 것이기 때문에 조항
A FULL OUTER JOIN
의 조합입니다.LEFT OUTER
★★★★★★★★★★★★★★★★★」RIGHT OUTER
두 행을 반환합니다.WHERE
조조음음음음음 where where where ON
수 .NULL
값을 입력합니다.
이 위키피디아 문서에서는 표의 샘플세트를 사용하여 다양한 유형의 조인(join)에 대해 설명합니다.
일부에서는 항상 명확하지 않을 수 있는 것은 빈 테이블(또는 결과 세트)과의 크로스 조인 결과 빈 테이블(M x N, 따라서 M x 0 = 0)이 발생한다는 것입니다.
M과 N이 모두 0이 아닌 한 풀 아우터 조인에는 항상 행이 있습니다.
다른 답변에 한 가지 중요한 측면을 추가하고자 합니다. 이 답변은 실제로 이 주제에 대해 가장 잘 설명한 것입니다.
2개의 조인 테이블에 M 행과 N 행이 포함되어 있는 경우 크로스 조인에서는 항상 (M x N) 행이 생성되지만 풀 아우터 조인에서는 (실제로 "on" 술어에 일치하는 행의 수에 따라) MAX(M, N) 행에서 (M + N) 행이 생성됩니다.
편집:
논리 쿼리 처리의 관점에서 보면 크로스 조인(CROSS JOIN)은 실제로 항상 M x N 행을 생성하는 것은 아닙니다.FULL OUTER JOIN을 사용하면 왼쪽과 오른쪽의 양쪽 테이블이 모두 "보존"됩니다.따라서 왼쪽 테이블과 오른쪽 테이블에서 모두 ON 술어를 충족하지 못하는 행이 결과 세트에 추가됩니다.
Server의 SQL Server의 경우CROSS JOIN and FULL OUTER JOIN
하다CROSS JOIN
는 필터 기준이나 조건에 관계없이 단순히 두 표의 데카르트 곱입니다.
FULL OUTER JOIN
는 고유한 합니다.LEFT OUTER JOIN and RIGHT OUTER JOIN
2월 1일또한 테이블의 두 열을 매핑하기 위해 ON 절이 필요합니다.
표 1에는 10개의 행이 포함되어 있으며 표 2에는 20개의 행이 포함되어 있으며 5개의 행이 특정 열에 일치합니다.
★★★★★★★★★★★★★★★.
CROSS JOIN
10*20=200이다
FULL OUTER JOIN
25일입니다.INNER JOIN
는 일치하는 행을 반환하므로 결과 세트에 5개의 행을 반환합니다.
FULL OUTER JOIN
다른 JOIN)은 ('Da' 또는 'JOIN'보다) 결과 세트를 합니다.Cartesian Product number
.된 의 수
FULL OUTER JOIN
수 by ( ) ) 。LEFT OUTER JOIN
(+에의 수:RIGHT OUTER JOIN
행 - ( ) - ( ) :INNER JOIN
를 참조해 주세요.
Cross Join : Cross Join은 2개 이상의 테이블에서 행의 모든 조합으로 구성된 결과를 생성합니다.즉, 테이블A에 3행, 테이블B에 2행이 있는 경우 CROSS JOIN은 6행이 됩니다.두 테이블 사이에는 관계가 확립되어 있지 않습니다.말 그대로 가능한 모든 조합을 생성할 뿐입니다.
풀 아우터 조인 : 풀 아우터 조인(FULL OUTER JOIN)은 "왼쪽"도 "오른쪽"도 아닙니다.둘 다입니다.여기에는 JOIN에 참여하는 두 테이블 또는 결과 세트의 모든 행이 포함됩니다.JOIN의 "왼쪽" 행에 일치하는 행이 없는 경우 "오른쪽" 결과 세트의 Null 값이 표시됩니다.반대로 JOIN의 "오른쪽" 행에 일치하는 행이 없는 경우 "왼쪽" 결과 세트의 Null 값이 표시됩니다.
반환되는 NULL 값 이외에는 동일한 개념입니다.
아래를 참조해 주세요.
declare @table1 table( col1 int, col2 int );
insert into @table1 select 1, 11 union all select 2, 22;
declare @table2 table ( col1 int, col2 int );
insert into @table2 select 10, 101 union all select 2, 202;
select
t1.*,
t2.*
from @table1 t1
full outer join @table2 t2 on t1.col1 = t2.col1
order by t1.col1, t2.col1;
/* full outer join
col1 col2 col1 col2
----------- ----------- ----------- -----------
NULL NULL 10 101
1 11 NULL NULL
2 22 2 202
*/
select
t1.*,
t2.*
from @table1 t1
cross join @table2 t2
order by t1.col1, t2.col1;
/* cross join
col1 col2 col1 col2
----------- ----------- ----------- -----------
1 11 2 202
1 11 10 101
2 22 2 202
2 22 10 101
*/
크로스 참가: http://www.dba-oracle.com/t_garmany_9_sql_cross_join.htm
TLDR; 두 표 간에 가능한 모든 조합을 생성합니다(카테시안 제품).
(풀) 외부 참여 : http://www.w3schools.com/Sql/sql_join_full.asp
TLDR: 두 테이블의 모든 행을 반환하고 값이 동일한 결과도 반환합니다(CONTION의 일치).
SQL 풀 아우터 조인
FULL OUTER JOIN은 일치 여부에 관계없이 왼쪽 테이블(table1)과 오른쪽 테이블(table2)의 모든 행을 반환합니다.
FULL AUTER JOIN 키워드는 LEFT AUTER JOIN과 RIGHT AUTER JOIN의 양쪽 결과를 결합합니다.
- SQL 전체 외부 결합은 FULL JOIN이라고도 합니다.
참고 자료 : http://datasciencemadesimple.com/sql-full-outer-join/
SQL 크로스 조인
SQL CROSS JOIN에서 첫 번째 테이블의 각 행은 두 번째 테이블의 각 행과 각 행이 매핑됩니다.
CROSS JOIN 연산의 결과 세트에 의해 생성되는 행의 수는 첫 번째 테이블의 행 수에 두 번째 테이블의 행 수를 곱한 값과 같습니다.
크로스 조인(CROSS JOIN)은 데카르트 곱/데카르트 결합이라고도 합니다.
테이블 A의 행 수는 m, 테이블 B의 행 수는 n이며 결과 테이블에는 m*n 행이 있습니다.
참고 자료: http://datasciencemadesimple.com/sql-cross-join/
풀 아우터 조인은 좌측 아우터 조인과 우측 아우터 조인을 결합합니다.결과 집합은 조건이 충족되는 두 테이블에서 행을 반환하지만 일치하지 않는 경우에는 null 열을 반환합니다.
크로스 조인(cross join)은 테이블을 조인하는 데 어떤 조건도 필요하지 않은 데카르트 제품입니다.결과 세트에는 두 테이블의 곱셈인 행과 열이 포함됩니다.
언급URL : https://stackoverflow.com/questions/3228871/sql-server-what-is-the-difference-between-cross-join-and-full-outer-join
'programing' 카테고리의 다른 글
Link-to-Sql: 여러 왼쪽 외부 결합 (0) | 2023.04.07 |
---|---|
일별로 그룹화할 SQL 쿼리 (0) | 2023.04.07 |
서버 주체가 SQL Server MS 2012의 현재 보안 컨텍스트에서 데이터베이스에 액세스할 수 없습니다. (0) | 2023.04.07 |
Angular에서 $location으로 리디렉션하는 방법.path를 $120으로 지정합니다.성공 후 콜백 (0) | 2023.04.02 |
angular.js 뷰에서 사용하기 전에 스코프 변수가 로드될 때까지 기다립니다. (0) | 2023.04.02 |