2011-07-29 5 views
3

동일한 기본 키를 가진 테이블이 두 개 있지만 다른 테이블보다 훨씬 큽니다. 어떤 ID가 작은 테이블에 행이 있는지 알고 싶습니다. 이 예에서 a은 크고 b은 작습니다. 바로 지금, 나는 b 값이 NULL인지 아닌지를 결정하기 위해 CASE와 OUTER JOIN을 사용하고 있습니다. 작동하지 않습니다 (항상 1 점을 얻음). 이 문제를 해결하는 것은 좋지만 더 좋은 방법이 있어야합니다. 어떻게해야합니까? 외부 키 컬럼 (들)의 NULL 점검mysql 외부 조인 - 조인 된 행이 존재하는지 확인

SELECT a.id, 
     CASE b.id 
     WHEN NULL THEN 0 
     ELSE 1 
     END AS exists 
FROM a LEFT OUTER JOIN b 
    ON a.id=b.id; 

답변

6

이것은 당신이 보여 무엇을 같은 논리를 가지고 있지만 짧은 코드를 가지고 :

SELECT a.id,NOT ISNULL(b.id) AS exists 
FROM a LEFT OUTER JOIN b 
    ON a.id=b.id; 
3

호는이 작업을 수행하는 방법을 정확하게.

그러나 아무 것도 NULL (값이 아님)과 동등하지 않으므로 CASEELSE 부분으로 이동합니다. 열이 NULL인지 확인하려면 IS NULL을 사용해야합니다.

CASE WHEN b.id IS NULL THEN ...