문제
가정 우리는 테이블:
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
제휴하지 않습니다 StackOverflow