[SQL] MySQL JOIN

Updated:


전체

join

출처 - [MySQL] Join (Outer Join, Inner Join) 설명 및 예제

1. INNER JOIN

교집합, 공통 부분만 리턴

SELECT * FROM TABLE A
INNER JOIN TABLE B
ON A.KEY = B.KEY;

2. LEFT OUTER JOIN

LEFT OUTER JOIN = LEFT JOIN

왼쪽 + 공통부분

A와 B 테이블 중, A 값 + A와 B의 KEY값이 같은 결과를 리턴하는 것

SELECT * FROM TABLE A
LEFT OUTER JOIN TABLE B
ON A.KEY = B.KEY;
  • 순수 A 만 구할 때 A - B

LEFT JOIN 후, B가 가진 테이블 COLUMN 항목이 NULL로 포함되어 있을 것 따라서 B의 KEY 값이 NULL인지 확인

SELECT * FROM TABLE A
LEFT OUTER JOIN TABLE B
ON A.KEY = B.KEY
WHERE B.KEY IS NULL;

3. RIGHT OUTER JOIN

RIGHT OUTER JOIN = RIGHT JOIN

오른쪽 + 공통부분

A와 B 테이블 중, B 값 + A와 B의 KEY값이 같은 결과를 리턴하는 것

SELECT * FROM TABLE A
RIGHT OUTER JOIN TABLE B
ON A.KEY = B.KEY;
  • 순수 B 만 구할 때 B - A

RIGHT JOIN 후, A가 가진 테이블 COLUMN 항목이 NULL로 포함되어 있을 것 따라서 A의 KEY 값이 NULL인지 확인

SELECT * FROM TABLE A
RIGHT OUTER JOIN TABLE B
ON A.KEY = B.KEY
WHERE A.KEY IS NULL;

4. FULL OUTER JOIN

A와 B 전체를 SELECT

SELECT * FROM TABLE A
FULL OUTER JOIN TABLE B
ON A.KEY = B.KEY;

MySQL은 FULL OUTER JOIN 은 지원하지 않는다. 그래서 LEFT + RIGHT 해서 UNION 해서 사용해야 함

SELECT * FROM TABLE A LEFT JOIN TABLE B
UNION
SELECT * FROM TABLE A RIGHT JOIN TABLE B
  • 교집합 제외
SELECT * FROM TABLE A LEFT JOIN TABLE B
UNION
SELECT * FROM TABLE A RIGHT JOIN TABLE B
WHERE A.KET IS NULL OR B.KEY IS NULL;

3중 JOIN

  • inner join
  • outer join
SELECT * 
FROM TABLE A LEFT OUTER JOIN TABLE B
ON A.KEY = B.KEY 
JOIN TABLE C 
ON B.KEY = C.KEY;

참고

[MySQL] Join (Outer Join, Inner Join) 설명 및 예제

Leave a comment