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절에 주는 것이 다른 결과를 낼 수 있기 때문에 주의해서 사용해줘야 합니다.
'프로그래밍 > SQL, Hive, SAS 관련 정보' 카테고리의 다른 글
[SQL - Frequently Used Code] partition by / order by 없이 window함수 쓰기 (0) | 2025.04.07 |
---|---|
[SQL문제풀이 - Having 절 조건주기] - Customers Who Bought All Products (0) | 2025.04.07 |
[SQL 기초] 날짜 덧셈/뺄셈 (0) | 2025.03.23 |
[SQL기초] Oracle/MySQL의 대표적인 용법 차이 (0) | 2025.03.22 |
[SQL기초] 형 변환 (0) | 2025.03.22 |