728x90
반응형
GoalPermalink
- Join에 대해 이해하고 이를 활용할 수 있다.
- Left Join, Right Join 차이점을 이해한다.
한 눈에 보는 전체 사진Permalink
1. LEFT JOIN (= LEFT OUTER JOIN)Permalink
LEFT OUTER JOIN 이라고도 쓰이고, LEFT JOIN 으로 쓰는 개발자도 있길래 구글링해보니 둘다 똑같은 말이라고 한다.
LEFT JOIN은 A와 B 테이블 중에 A값 + A와 B의 KEY값이 같은 결과 를 리턴하는 것이다.
SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key;
2. RIGHT JOIN (= RIGHT OUTER JOIN)Permalink
RIGHT JOIN은 A와 B 테이블 중에 B 값 + A와 B의 KEY값이 같은 결과 를 리턴하는 것이다.
SELECT * FROM TableA A RIGHT JOIN TableB B ON A.key = B.key;
3. LEFT JOIN (순수 A만 구할 때)Permalink
순수 A만 구할 때, 순수 A들은 JOIN 후 B가 가진 테이블 COLUMN들의 항목이 NULL로 포함되어 있을 것이다.
그래서 B의 KEY 값이 IS NULL인지 확인한다.
SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key
WHERE B.Key IS NULL;
4. RIGHT JOIN (순수 B만 구할 때)Permalink
순수 B만 구할 때, 순수 B들은 JOIN 후 A가 가진 테이블 COLUMN들의 항목이 NULL로 포함되어 있을 것이다.
그래서 A의 KEY 값이 IS NULL인지 확인한다.
SELECT * FROM TableA A RIGHT JOIN TableB B ON A.key = B.key
WHERE A.Key IS NULL;
5. INNER JOIN (A와 B의 교집합)Permalink
드디어 등장한 INNER JOIN
A와 B의 교집합 ( 서로 중복되는 값)을 보여준다.
SELECT * FROM TableA A INNER JOIN TableB B ON A.key = B.key;
6. FULL OUTER JOINPermalink
이름에서도 알수있는 FULL의 의미! A와 B 전체를 구하는 것!
SELECT * FROM TableA A FULL OUTER JOIN TableB B ON A.key = B.key;
- 여기서 문제! MySQL은 FULL OUTER JOIN을 지원하지 않는다고 한다.
- 그래서 LEFT JOIN과 RIGHT JOIN을 UNION해서 사용해야한다.
SELECT * FROM TableA A LEFT JOIN TableB B
UNION
SELECT * FROM TableA A RIGHT JOIN TableB B
7. FULL OUTER JOIN (교집합 제외)Permalink
SELECT * FROM TableA A LEFT JOIN TableB B
UNION
SELECT * FROM TableA A RIGHT JOIN TableB B
WHERE A.key IS NULL OR B.key IS NULL
ReferencePermalink
728x90
반응형
'IT > SQLD' 카테고리의 다른 글
MySQL의 여러 테이블에서 선택하는 방법 (0) | 2023.11.01 |
---|---|
3개 이상의 테이블 LEFT JOIN 하기 (0) | 2023.11.01 |
[MySQL || MariaDB] 여러 테이블 한번에 카운터 하기 (0) | 2023.11.01 |
MYSQL 테이블 Collation 확인, 변경 방법 (Character Set과의 차이) (0) | 2023.10.26 |
mysql 테이블 및 컬럼 케릭터셋 변경 하기 (0) | 2023.10.26 |