문제

가정 우리는 테이블:

itemid mark
1      5
2      3

와 테이블 B:

itemid mark
1      3
3      5

내가 원하는 가입*B a 에서 itemid=B.itemid 오른쪽 및 왼쪽니다.즉결과:

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

은 거기에 그것을 할 수있는 방법 중 하나에서 쿼리를 MySQL?

도움이 되었습니까?

해결책

그것은 전체 외부에 가입하고 그 기본적으로 지원되지 않습에서 MySQL,심사에서 문서.작업할 수 있습니다 이 한계는 사용하는 조합에 설명된 대로 코멘트 페이지에 나는 연결을 시도합니다.

[편집]이후 다른 사람에 게시한 조각이 여기 있습니다.당신이 볼 수 있 설명서 링크된 페이지입니다.

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

다른 팁

와 함께 할 수 있는 몇 가지 작업을 하지만 여기에 몇 가지 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;

이에 의존하는 왼쪽 가 반환하는 모든 행에서 원래블(이 경우에는 이것은 하위 select 표 T).일치하지 않는 경우에 합류했 테이블,그때를 설정합니다 열 NULL 입니다.

이것이 나를 위해서는 SQL Server:

select isnull(a.id, b.id), a.mark, b.mark
from a 
full outer join b on b.id = a.id
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top