반응형

테이블 정보

tbl_person
---------------------------
seq name age
------ --------- --------
1 어린이 10
2 청소년 15
3 대학생 20
tbl_info
----------------------------------------------------
seq person_seq school explanation
------ ---------- ------------ ------------------
1 1 초등학교 열심히 놀기
2 2 중학교 공부 시작
3 2 고등학교 공부 힘듬
4 4 대학교 다시 놀기

 

1. A LEFT JOIN B : A전체 + B값

SELECT a.seq, a.name, a.age, b.school, b.explanation
FROM tbl_person a LEFT JOIN tbl_info b ON a.seq = b.person_seq;
===========================================================
seq name age school explanation
------ --------- ------ ------------ ------------------
1 어린이 10 초등학교 열심히 놀기
2 청소년 15 중학교 공부 시작
2 청소년 15 고등학교 공부 힘듬
3 대학생 20 (NULL) (NULL)

 

2. RIGHT JOIN : A + B전체

SELECT a.seq, a.name, a.age, b.school, b.explanation
FROM tbl_person a RIGHT JOIN tbl_info b ON a.seq = b.person_seq;
===========================================================
seq name age school explanation
------ --------- ------ ------------ ------------------
1 어린이 10 초등학교 열심히 놀기
2 청소년 15 중학교 공부 시작
2 청소년 15 고등학교 공부 힘듬
(NULL) (NULL) (NULL) 대학교 다시 놀기

 

3. INNER JOIN : 조건값이 서로 있는 값만 나타낸다.

SELECT a.seq, a.name, a.age, b.school, b.explanation
FROM tbl_person a INNER JOIN tbl_info b ON a.seq = b.person_seq;
===========================================================
seq name age school explanation
------ --------- ------ ------------ ------------------
1 어린이 10 초등학교 열심히 놀기
2 청소년 15 중학교 공부 시작
2 청소년 15 고등학교 공부 힘듬
-----------------------------------------------------------
(참고)아래의 쿼리 결과값과 동일함
SELECT a.seq, a.name, a.age, b.school, b.explanation
FROM tbl_person a, tbl_info b
WHERE a.seq = b.person_seq

 

4. Full Outer Join : A전체 + B전체

  • MySql은 Full Outer Join이 없으므로 Left + Right Join을 이용해서 구현한다.
SELECT a.seq, a.name, a.age, b.school, b.explanation
FROM tbl_person a LEFT JOIN tbl_info b ON a.seq = b.person_seq
UNION
SELECT a.seq, a.name, a.age, b.school, b.explanation
FROM tbl_person a RIGHT JOIN tbl_info b ON a.seq = b.person_seq
===========================================================
seq name age school explanation
------ --------- ------ ------------ ------------------
1 어린이 10 초등학교 열심히 놀기
2 청소년 15 중학교 공부 시작
2 청소년 15 고등학교 공부 힘듬
3 대학생 20 (NULL) (NULL)
(NULL) (NULL) (NULL) 대학교 다시 놀기
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기