Share via


Null 값 및 조인

조인되는 테이블의 열에 Null 값이 있을 경우 Null 값은 서로 일치하지 않습니다. 조인되는 테이블 중 한 테이블의 열에 있는 Null 값은 외부 조인을 사용해야만 반환됩니다(WHERE 절이 Null 값을 배제하지 않을 경우).

다음 두 테이블에는 조인에 포함되는 열에 모두 NULL이 있습니다.

table1                          table2
a           b                   c            d
-------     ------              -------      ------
      1        one                 NULL         two
   NULL      three                    4        four
      4      join4

c 열에 대해 a 열의 값을 비교하는 조인은 NULL 값을 가진 열에서는 일치하는 행이 없습니다.

SELECT *
FROM table1 t1 JOIN table2 t2
   ON t1.a = t2.c
ORDER BY t1.a

a와 c 열에서 값이 4인 한 행만 반환됩니다.

a           b      c           d      
----------- ------ ----------- ------ 
4           join4  4           four   

(1 row(s) affected)

기본 테이블에서 반환되는 Null 값은 외부 조인에서 반환되는 Null 값과 구분하기가 어렵습니다. 예를 들어 다음 SELECT 문은 위의 두 테이블에 대해 왼쪽 우선 외부 조인을 수행합니다.

SELECT *
FROM table1 t1 LEFT OUTER JOIN table2 t2
   ON t1.a = t2.c
ORDER BY t1.a

결과 집합은 다음과 같습니다.

a           b      c           d      
----------- ------ ----------- ------ 
NULL        three  NULL        NULL 
1           one    NULL        NULL 
4           join4  4           four   

(3 row(s) affected)

위의 결과에서 데이터에 포함된 NULL과 조인 실패를 나타내는 NULL을 구분하기가 어렵습니다. 조인되는 데이터에 Null 값이 있으면 일반 조인을 사용하여 이를 결과에서 제외하는 것이 좋습니다.