steadilee
FRACTAL
steadilee
전체 방문자
오늘
어제
  • 분류 전체보기 (47)
    • Knowledge (0)
      • 컴퓨터 (0)
    • Data Analysis (7)
      • 공부 (4)
      • Simple Analysis (0)
      • ML,DL (3)
      • Kaggle (0)
    • Skill (40)
      • SQL 이론 (3)
      • Oracle (18)
      • MySQL (0)
      • Python (5)
      • Linux (2)
      • C,C#,C++ (8)
      • Java (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
steadilee

FRACTAL

Skill/SQL 이론

JOIN ON vs Where

2022. 5. 24. 08:58

JOIN에서 ON절과 WHERE절의 차이

같은 조건이라도 JOIN할 때 ON절에 조건을 넣을 때와 WHERE절에 조건을 넣을 때
쿼리 결과는 다르다. 어떻게 다른지 두 테이블을 살펴보자.

1) SELECT *
FROM employee a
LEFT OUTER JOIN department b
ON a.department_no = b.department_no
WHERE b.location = 'korea';

2) SELECT *
FROM employee a
LEFT OUTER JOIN department b
ON a.department_no = b.department_no
AND b.location = 'korea';

1)의 경우에는 employee테이블과 department 테이블이 outer join을 한 후
location이 korea인 값들만 추출한다.

2)의 경우에는 department 테이블에서 location이 korea인 값만 employee 테이블과 조인한다.

따라서 결과는
1)에는 location이 korea인 값만 존재하지만
2)에서는 location이 korea가 아닌 값도 존재하게된다.


employee 테이블

employee_id department_no
1000 10
1001 10
1002 20



department 테이블

department_no location
10 korea
20 usa



1) 1000, 10, korea
1001, 10, korea

2) 1000, 10, korea
1001, 10, korea
1002, 20, null



2)의 쿼리를 풀어서 다른 방식으로 써보면

3) SELECT *
FROM employee a
LEFT OUTER JOIN ( SELECT *
FROM department
where location = 'korea' ) b
ON a.department_no = b.department_no;

3)과 같다.

출처 : http://blog.leocat.kr/notes/2017/07/28/sql-join-on-vs-where
*해당 출처를 참고하여 작성한 글입니다.


출처: https://eddyplusit.tistory.com/52 [EddIT]

'Skill > SQL 이론' 카테고리의 다른 글

프로그래머스 SQL 문제풀이1  (0) 2023.03.09
계층형 질의문  (0) 2022.05.25
    'Skill/SQL 이론' 카테고리의 다른 글
    • 프로그래머스 SQL 문제풀이1
    • 계층형 질의문
    steadilee
    steadilee

    티스토리툴바