2013-02-17 3 views
1

아래 질문은 나와 인터뷰에서 질문되었습니다. 나는 그것의 가능 여부를 출력은TableA에 기록 가져 오기 표 B에 없음 왼쪽 외부 참여

Name 
Person D 
Person E 
Person F 

두 표해야한다이 경우

CREATE TABLE TableA(Id INT, Name VARCHAR(255)); 
CREATE TABLE TableB(Id INT); 

INSERT INTO TableA(Id, Name) 
VALUES (1, 'Person A'), 
     (2, 'Person B'), 
     (3, 'Person C'), 
     (4, 'Person D'), 
     (5, 'Person E'), 
     (6, 'Person F'); 

INSERT INTO TableB(Id) 
VALUES (1), 
     (2), 
     (3); 

에 참여 왼쪽 외부 사용 여부를 알 수 없습니다. TableA 및 Table B. Table A에있는 이름이 Table B에없는 경우를 원합니다. 왼쪽 외부 결합으로이 작업을 수행 할 수 있습니까? 종이와 펜으로 몇 분 동안 고민하고 종이에서 내가 나중에 잘못 발견 한 쿼리를 썼습니다.

참고 : 하위 쿼리를 사용하지 마십시오. 나는 똑같이했고 면접관은 나에게 왼쪽 외부 조인으로 그렇게 해달라고 부탁했다.

가능한지 아닌지 알려주세요.

SQL Fiddle

답변

3

쉬운만큼 소리 테이블에 당신에게 일치를 제공해야

SELECT * FROM TableA a 
LEFT JOIN TableB b on b.Id=a.Id 
WHERE b.ID is null 

. 트릭은 B면의 널 (Null) 행에 관심이 있다는 것을 인식하는 것입니다.

+0

응답을 주셔서 감사합니다. 그것의 까다로운 질문 – ArrayOutOfBound

-2

당신은 하위 쿼리를 사용할 수 있나요?

SELECT Name FROM TableA 
WHERE TableA.ID not in (SELECT TableB.ID From TableB) 
+0

나는 그가 왼쪽 외부 조인을 사용하여 특히 물었다. – ArrayOutOfBound

관련 문제