1. table : kgroup - 아이돌그룹

 

 

2. table : album - 아이돌 노래명

 

 

1. kgroup 의 아이돌들이 부른 노래들을 보고싶다면 left join을 이용한다.

select a.name, a.agency, b.title
from kgroup a
left join album b
on a.name = b.name

 

album 테이블에 러블리즈가 부른 노래가 없으므로 러블리즈의 title컬럼은 null이다.

 

2. album 의 노래를 부른 가수들의 소속사를 보고싶다면 right join을 이용한다.

select a.agency, b.name, b.title
from kgroup a
right join album b
on a.name = b.name;

 

3. 전체 목록을 출력하고 싶다면 full outer join을 사용할 수 있다.

 

mysql 의 경우 full outer join을 지원하지 않으므로

 

"select * from a left join b on a.no = b.no

union

select * from a right join b on a.no = b.no"

의 형식을 사용하면 된다.

select a.name, a.agency, b.title
from kgroup a
left join album b
on a.name = b.name
union
select b.name, a.agency, b.title
from kgroup a
right join album b
on a.name = b.name;

 

 

 

 

3_2. 비교 : union all 을 사용할 경우 

select a.name, a.agency, b.title
from kgroup a
left join album b
on a.name = b.name
union all
select b.name, a.agency, b.title
from kgroup a
right join album b
on a.name = b.name;

 

이 때 union 과 union all의 차이점을 알아야 한다.

left join과 right join을 합할 경우 가운데 inner join 부분이 중복된다.

union의 경우 중복값을 제거해주고 union all은 중복값을 포함한 결과값들이 출력되므로

중복되는 inner join 결과들을 제거해주는 union을 사용해야 한다.

 


WRITTEN BY
beautifulhill

,