SQL JOIN

On a regular basis·2021년 10월 17일
0

JOIN(inner, left)

  • 계속 animal_ins table과 animal_outs table을 inner join하고 있었는데 이건 left join을 했어야했던 문제였다. 기계적으로 inner join 하고있는 나를 발견하면서 진짜 무서웠다. 문제를 보고 요구하는게 뭔지 정확하게 파악하는게 너- 무 중요해....^^
🙈 헛발질...
select b.animal_id,b.name from animal_outs b
inner join animal_ins a
on a.animal_id = b.animal_id
where a.animal_id IS NULL
order by b.animal_id
  • 이건 교집합을 찾는게 아니니까 inner join이 아닌 것. 기준이 animal_outs이당! animal_outs에는 있는데 animal_ins에는 없는 동물들을 찾아주는거니까 기준이 animal_outs가 되고 그러니까 animal_outs에 animal_ins를 left조인 시켜줘야했떤 것이어따고한다...!

A를 기준으로 B와 LEFT JOIN 하려면 => A LEFT JOIN B

🐵 예쁘게 풀기
select b.animal_id,b.name from animal_outs b
left join animal_ins a on a.animal_id = b.animal_id
where a.animal_id IS NULL
order by b.animal_id
  • 결국은 not in으로 풀긴했는데 ㅎㅎㅎ 에잇. 🦕
select animal_id, name from animal_outs
where animal_id not in (select animal_id from animal_ins);
profile
개발 기록

0개의 댓글