본문 바로가기

Database/MS SQL

MS SQL。조인(JOIN)

728x90
반응형

여러개의 테이블을 연결하여 하나의 테이블로 사용

 

1. INNER JOIN

교집합(A ∩ B)과 동일, 서로 일치하는 데이터 출력

 

SELECT *
  FROM [테이블명] A
 INNER JOIN [테이블명] B ON A.[필드] = B.[필드]

 

 

 

2. LEFT JOIN(= LEFT OUTER JOIN)

차집합(A - B)과 동일, 기준 테이블에 JOIN된 테이블과 조건이 맞는 기준 테이블의 데이터 출력

 

SELECT *
  FROM [테이블명] A
  LEFT [OUTER] JOIN [테이블명] B ON A.[필드] = B.[필드]
  
-- C를 제외한 데이터 출력
SELECT *
  FROM [테이블명] A
  LEFT [OUTER] JOIN [테이블명] B ON A.[필드] = B.[필드]
 WHERE B.[필드] IS NULL

 

 

 

3. RIGHT JOIN(= RIGHT OUTER JOIN)

차집합(A - B)과 동일, 기준 테이블에 JOIN된 테이블과 조건이 맞는 JOIN된 테이블의 데이터 출력

 

SELECT *
  FROM [테이블명] A
 RIGHT [OUTER] JOIN [테이블명] B ON A.[필드] = B.[필드]

-- C를 제외한 데이터 출력
SELECT *
  FROM [테이블명] A
 RIGHT [OUTER] JOIN [테이블명] B ON A.[필드] = B.[필드]
 WHERE A.[필드] IS NULL

 

 

 

4. FULL JOIN(= FULL OUTER JOIN)

합집합(A ∪ B)과 동일, 모든 데이터 출력

 

SELECT *
  FROM [테이블명] A
  FULL [OUTER] JOIN [테이블명] B ON A.[필드] = B.[필드]
  
-- C를 제외한 데이터 출력
SELECT *
  FROM [테이블명] A
  FULL [OUTER] JOIN [테이블명] B ON A.[필드] = B.[필드]
 WHERE A.[필드] IS NULL
    OR B.[필드] IS NULL

 

 

 

5. CROSS JOIN

곱집합(A × B)과 동일, 기준 테이블의 데이터와 JOIN된 테이블의 데이터를 전부 JOIN하여 데이터 출력

 

-- 1
SELECT *
  FROM [테이블명] A
 CROSS JOIN [테이블명] B
 
-- 2
SELECT *
  FROM [테이블명] A, [테이블명] B

 

728x90
반응형

'Database > MS SQL' 카테고리의 다른 글

MS SQL。임시 테이블(WITH)  (0) 2020.12.05
MS SQL。변수 선언(DECLARE)  (0) 2020.12.04
MS SQL。집합 연산자(EXCEPT)  (0) 2020.12.02
MS SQL。집합 연산자(INTERSECT)  (0) 2020.12.01
MS SQL。집합 연산자(UNION, UNION ALL)  (0) 2020.11.30