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컬럼에 대한 데이터가 누락됩니다.

 

  1. NULL 값 필터링: OUTER JOIN에서 한 쪽 테이블과 매칭되는 데이터가 없는 경우, 해당 행의 다른 쪽 테이블의 열은 NULL 값을 가집니다. WHERE 절을 사용하여 NULL이 아닌 행만 선택하면, 데이터의 일부가 누락될 수 있습니다.
  2. 결과 제한: WHERE 절을 사용하여 결과를 필터링하면 OUTER JOIN 결과에서 특정 행을 제외할 수 있습니다. 예를 들어, WHERE 절에서 조건을 만족하지 않는 행을 필터링하면 OUTER JOIN 결과에 해당 행이 나타나지 않게 됩니다.
  3. 조인 조건: OUTER JOIN의 결과를 필터링하기 위해 WHERE 절에 조인 조건을 추가할 수 있습니다. 조인 조건을 만족하지 않는 행은 결과에서 제외됩니다.
  4. 의도한 필터링: 때로는 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

+ Recent posts