2009-12-07 6 views

답변

6

당신은 좌 가입 및

SELECT 
    TableA.* 
FROM 
    TableA 
    LEFT JOIN 
    TableB 
    ON 
    TableB.TableA_id = TableA.id 
WHERE 
    TableB.id IS NULL 
+0

오 나는 왼쪽을 시도하고 있었다 가입 B에 일치하는 기록이없는 이러한 레코드를 선택하여 사용할 수 있지만 내가 놓친 where 절 .. 답변에 많은 감사드립니다. – user187580

+0

위의 작품은 훌륭하지만 빠르지 만, "반대"쿼리 'IS NOT NULL'즉, tableB가 방대한 아이디어 인 경우 가입 속도가 매우 느립니다. – zzapper

+0

'IS NOT NULL '은 간단한'JOIN' (LEFT없이)을 의미합니다. 느린 경우 실행 계획을 확인하고 일치하는 인덱스가 있는지 확인합니다. 또한 - 테이블 B의 모든 열이 필요합니까? 디스크에서 읽으면 쿼리가 느려질 수 있습니다. –

0

SELECT * FROM TableA WHERE id NOT IN (SELECT TableA_id FROM TableB)

1
SELECT TableA.* 
FROM TableA 
LEFT JOIN TableB ON (TableA.id = TableB.TableA_id) 
WHERE TableB.id IS NULL 
1
Select a.* 
From TableA a 
Left Outer Join TableB b on b.TableA_id=a.id 
Where b.id is NULL 
관련 문제