2016-10-17 3 views
0

안녕이 다음과 같은 두 개의 테이블 :SQL 비교하는 방법 널 = 널

DEP 테이블 :

Deptarment_id  Dep_name 
-------------------- 
1 Marketing 
2 IT 
3 Accouting 
4 QA 
null Contract 
5 BI 

EMP 테이블 :

Deptarment_id  Dep_name 
-------------------- 
1 Marketing 
2 IT 
3 Accounting 
4 QA 
null Contract 
5 BI 

나는 다음과 같은 쿼리를 실행하면

SELECT * FROM CUS left join EMP on Deptarment_id = CUSTOMER_ID; 

CUSTOMER_ID NAME Deptarment_id Dep_name 
1 JOE 1 Marketing 
3 Chris 3 Accounting 
5 John 5 BI 
null Steve null null 
null Mary null null 
99 test null null 

하지만 내가 찾고있는 것은 이와 비슷한 것입니다. 나는 '계약'가치를 되 찾을 수 없다.

CUSTOMER_ID NAME Deptarment_id Dep_name 
1   JOE  1    Marketing 
3   Chris 3    Accounting 
5   John 5    BI 
null  Steve null   Contract 
null  Mary null   Contract 
99   test null   null 
+0

사용중인 데이터베이스에 질문을 태그하십시오. –

+0

당신이 테이블을 놓친 것처럼 보입니다 ... cus – scaisEdge

답변

0

실제로 SQL에서 NULL 값을 "오용"하고 싶습니다. NULL은 특정 값이 아닙니다. 의미 상으로는 값이 알려지지 않음 (누락되지는 않았지만 알 수 없음)을 의미합니다. 따라서 평등은 타당하지 않습니다.

이론은 좋지만 간혹 NULL을 합법적 인 값으로 취급하고 싶습니다. 이 경우, 명시 :

SELECT * 
FROM DEP left join 
    EMP 
    on (DEP.Department_id = EMP.Department_id) or 
     (DEP.Department_id is null AND EMP.Department_id is null); 

가 나는 join 상태 or 종종 성능 킬러 있음을 경고한다. 일부 데이터베이스는 NULL 안전 비교를 제공하지만 데이터베이스 별입니다. 성능이 문제가되는 경우 다른 방법도 있습니다. 성능이 문제가되는 경우

, 다른 질문과 포함하십시오

  • 실행 가능한 샘플 데이터
  • 당신이
  • 성능 고려 사항을 원하는
  • 결과를 시도 쿼리를 (방법 큰 테이블)

이 질문에, 샘플 데이터가 쿼리와 일치하지 않으므로 몇 가지 세부 정보를 채 웁니다.

+0

정말 고마워요. – HAPPYGUY