개발 지식/DB
[RDBMS] JOIN 내 ON과 WHERE의 차이
sssukho
2020. 2. 18. 01:24
반응형
이전에 사용했었던 예시 테이블을 가지고 설명을 해보겠다.
- user 테이블 : 유저 아이디, 유저 이름 컬럼 존재
- board 테이블 : 게시글 고유번호(id), 게시글 제목, 게시글 내용, 글쓴이 아이디(유저 아이디)
JOIN에서의 ON과 WHERE의 차이점은 조인하는 범위가 다르다는 것이 기본적인 차이점이다. 아래 두 가지 query문들은 모두 LEFT JOIN을 수행하는 OUTER JOIN이다.
첫번째는 WHERE 절을 실행한 경우고, 두번째는 WHERE 절을 사용하지 않았다. 첫번째의 경우는 user와 board 테이블의 OUTER JOIN을 수행한 후에 b.writer=0인 데이터들을 추출하지만 두번째의 경우는 (user 테이블)과 (board 테이블 중 board.writer=0인 경우)를 OUTER JOIN 한 결과가 나온다.
따라서 첫번째 WHERE절을 사용한 결과는 b.writer=0인 데이터만 존재하지만 두번째의 결과는 b.writer=0이 아닌 데이터도 존재한다. 결국 ON과 WHERE의 경우는 JOIN을 할 범위가 다르다는 뜻이다.
REFERENCE : https://blog.leocat.kr/notes/2017/07/28/sql-join-on-vs-where
반응형