반응형

테이블 정보

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)  대학교            다시 놀기     
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기