join 에서 on과 where의 차이가 무엇일까라는 질문을 받았을 때 정확히 대답이 어려웠습니다.
어떤 때는 달랐던 것 같고 어떤 때는 같았던 것 같아 헷갈렸는데요.
관련해서 확인해보니 on 절은 join이 걸릴 때 사용되고 where 절은 join 후에 사용되었습니다.
그래서 inner join을 할 때는 결과에 차이가 없는데 outer join을 할 때는 차이가 발생하게 됩니다.
예를 들어 left join 할 때 아래와 같이 차이가 발생합니다.
-- left join이기 때문에 f.fname = b.bname 조건을 만족하지 않는 foo의 레코드도 결과에 포함
select * from foo f left join bar b
on f.fid = b.bid
and f.fname = b.bname
-- f.fname = b.bname 조건을 만족하지 않는 foo의 레코드는 결과에 미포함
select * from foo f left join bar b
on f.fid = b.bid
where f.fname = b.bname
'제안&정리' 카테고리의 다른 글
[JAVA] LocalDate atStartOfDay (1) | 2023.10.23 |
---|---|
[Java] 스레드 풀 설정 - corePoolSize, maxPoolSize, queueCapacity (2) | 2023.10.15 |
[Spock] 쉽게 테스트 작성하기 (0) | 2023.08.27 |
[Spring] 동일 클래스의 Async 호출하기 (0) | 2023.07.09 |
[JAVA] IntelliJ로 class -> record 변환 (0) | 2023.06.25 |