반응형
이전에 사용했었던 예시 테이블을 가지고 설명을 해보겠다.
- 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
반응형
'개발 지식 > DB' 카테고리의 다른 글
[PostgreSQL] 테이블 Range Partition 정리 (0) | 2020.08.02 |
---|---|
[프로그래머스 SQL] 있었는데요 없었습니다 MySQL (0) | 2020.08.01 |
[RDBMS] JOIN 기본 개념 (0) | 2020.02.16 |
[PostgreSQL] 3개 테이블 조인 (0) | 2020.02.11 |
[PostgreSQL] 테이블 생성 및 레코드 INSERT SELECT (0) | 2020.01.21 |