WHERE 절이 OUTER JOIN에서 데이터를 누락시키는 주요 이유 중 하나는 OUTER JOIN의 작동 방식과 관련이 있습니다.
OUTER JOIN은 두 개 이상의 테이블을 연결할 때 사용되며,
특히 어느 한 쪽 테이블에 매칭되는 데이터가 없더라도 결과를 반환합니다.
이러한 특성 때문에 WHERE 절에서 조건을 지정하면 OUTER JOIN의 결과를 필터링할 수 있습니다.
그러면 왜 OUTER JOIN에서 데이터를 누락시키는지 살펴보겠습니다
ex.
SELECT d.deptno, sum(e.sal)
FROM dept d LEFT OUTER JOIN emp e
ON d.deptno = e.deptno
WHERE e.sal > 2000
GROUP BY d.deptno
ORDER BY d.deptno;
: 이런 경우 deptno 가 10, 20, 30에 값이 있고, deptno 40에 e.sal 값이 null일 때 deptno 40컬럼에 대한 데이터가 누락됩니다.
- NULL 값 필터링: OUTER JOIN에서 한 쪽 테이블과 매칭되는 데이터가 없는 경우, 해당 행의 다른 쪽 테이블의 열은 NULL 값을 가집니다. WHERE 절을 사용하여 NULL이 아닌 행만 선택하면, 데이터의 일부가 누락될 수 있습니다.
- 결과 제한: WHERE 절을 사용하여 결과를 필터링하면 OUTER JOIN 결과에서 특정 행을 제외할 수 있습니다. 예를 들어, WHERE 절에서 조건을 만족하지 않는 행을 필터링하면 OUTER JOIN 결과에 해당 행이 나타나지 않게 됩니다.
- 조인 조건: OUTER JOIN의 결과를 필터링하기 위해 WHERE 절에 조인 조건을 추가할 수 있습니다. 조인 조건을 만족하지 않는 행은 결과에서 제외됩니다.
- 의도한 필터링: 때로는 OUTER JOIN 결과를 일부 필터링하여 특정 데이터만 가져오기를 원할 수 있습니다. 이 경우 WHERE 절을 사용하여 결과를 원하는 대로 제한할 수 있습니다.
OUTER JOIN과 WHERE 절을 함께 사용할 때 주의해야 합니다.
데이터 누락을 방지하려면 OUTER JOIN 조건과 WHERE 절을 조심스럽게 설계해야 합니다. 원하는 결과를 얻기 위해 조건을 올바르게 설정하는 것이 중요합니다.
'mybatis' 카테고리의 다른 글
트랜잭션 관리 (0) | 2023.09.14 |
---|---|
mybatis associate, collection, alias (0) | 2023.09.12 |
마이바티스란? (과정 및 개요) (0) | 2023.09.10 |
Spring + MySQL + Mybatis (0) | 2023.08.17 |