본문 바로가기
프로그래밍/SQL, Hive, SAS 관련 정보

[SQL 기초] Join의 on 조건과 where 조건

by TrillionNT 2025. 4. 5.

2025.02.24 - [프로그래밍/SQL, Hive, SAS 관련 정보] - [SQL] Table of Contents


이번 포스팅에서는 on조건(join을 위한 조건)과 where조건(필터링 조건)이 어떻게 다른 결과를 가져다주는지 한 번 체크해보겠습니다. 

 

예를 들어서 Employees 테이블은 아래와 같고

 

Departments 테이블은 아래와 같다고 해봅시다.

 

그런데 여기서 모든 직원을 조회하되, 부서 정보가 있는 경우에는 부서가 활성 상태(active_flag = 1)인 경우에만 부서 정보를 보여주고 싶다고 가정해봅니다.

 

1) On 절에 조건을 포함하는 경우

SELECT e.id, e.name, d.dept_name
FROM Employees e
LEFT JOIN Departments d
  ON e.dept_id = d.dept_id AND d.active_flag = 1;

 

2) where 절에 조건을 포함하는 경우

SELECT e.id, e.name, d.dept_name
FROM Employees e
LEFT JOIN Departments d
  ON e.dept_id = d.dept_id
WHERE d.active_flag = 1;

 

이렇게 on절에 조건을 주는것과 where절에 주는 것이 다른 결과를 낼 수 있기 때문에 주의해서 사용해줘야 합니다.