본문 바로가기
SQL

[SQL] JOIN 에서 ON 과 WHERE의 차이

by onejunu 2020. 8. 15.

https://blog.leocat.kr/notes/2017/07/28/sql-join-on-vs-where

 

[SQL] join의 on절과 where절 차이

이전 블로그에서 옮겨온 포스트 SQL의 JOIN에서 ON과 WHERE의 차이점은 JOIN하는 범위가 다르다. 아래 두 SQL문을 보자. 두 SQL문 모두 LEFT JOIN을 수행하는 OUTER JOIN이다. 1)의 경우는 a와 b 테이블의 OUTER JO

blog.leocat.kr

Query DSL 공부하다가 헷갈려서 헷갈린 김에 정리 해본다.

위 출처에 이해하기 쉽게 되어있다.

 

정리하자면

 

ON = "조인할 때의 조건"

WHERE = "테이블에서 어떤 ROW를 선택할까?"

 

예) left join == outer left join

아래 쿼리를 작성하면 어떤 결과가 나올까?

1.

select * 
from 과일상자 
    left join 과일 
        on 과일상자.id = 과일.과일상자id 
    where 과일 = 사과;

2.

select * 
from 과일상자 
    left join 과일 
        on 과일상자.id = 과일.id and 과일=사과;

<1번 쿼리 수행 과정>

과일상자를 기준으로 과일을 조인한다. 만약 과일상자id 를 참조하는 과일이 없을 경우 과일의 모든 필드를 Null로 한다.

<2번 쿼리 수행 과정>

 

 

'SQL' 카테고리의 다른 글

[MYSQL] 프로그래머스 sql 쿼리 문제 후기 및 접근법  (0) 2020.07.30

댓글