2008-08-13 4 views
8

한다고 가정 우리는 테이블 A가 :양방향 외부 조인

itemid mark 
1  5 
2  3 

및 테이블 B :

itemid mark 
1  3 
3  5 

난에 A * B를 가입 할 A.itemid = B.itemid 모두 오른쪽과 왼쪽 방법. 즉, 결과 :

itemid A.mark B.mark 
1  5  3 
2  3  NULL 
3  NULL 5 

MySQL의 한 쿼리에서 수행 할 수있는 방법이 있습니까?

답변

6

그것은 완전 외부 전화에 가입하고 그렇지는 docs에서 판단, MySQL의에서 기본적으로 지원되는 것입니다. 내가 링크 된 페이지의 주석에 설명 된대로 UNION을 사용하여이 제한을 피할 수 있습니다.

[편집] 다른 사람들이 스 니펫을 게시 한 이후로 여기에 있습니다. 링크 된 페이지에서 설명을 볼 수 있습니다.

SELECT * 
FROM A LEFT JOIN B ON A.id = B.id 
UNION ALL 
SELECT * 
FROM A RIGHT JOIN B ON A.id = B.id 
WHERE A.id IS NULL 
2

는 몇 가지 작업과 관련 그러나 여기이 (이것은이 경우 부속 선택 테이블 T에) 원래 테이블의 모든 행을 반환에 가입 왼쪽에 의존하는 일부 SQL

select distinct T.itemid, A.mark as "A.mark", B.mark as "B.mark" 
    from (select * from A union select * from B) T 
    left join A on T.itemid = A.itemid 
    left join B on T.itemid = B.itemid; 

입니다 수 없습니다. 조인 된 테이블에 일치하는 항목이 없으면 열을 NULL로 설정합니다.

-1

이 SQL Server에서 나를 위해 작동 :

select isnull(a.id, b.id), a.mark, b.mark 
from a 
full outer join b on b.id = a.id 
+0

질문은 명시 적으로 MySQL – cdeszaq