2010-08-10 1 views
5

Google 검색에 따르면 : MySQL은 전체 외부 조인을 지원하지 않기 때문에 전체 유니언 및/또는 유니언을 통해 시뮬레이션 할 수 있습니다. 그러나이 두 가지 모두 진짜 복제본을 삭제하거나 거짓 복제본을 표시합니다.MySQL에서 전체 외부 조인을 시뮬레이션하는 효율적인 방법은 무엇입니까?

무엇이 정확하고 효율적인 방법입니까?

question과 관련이 있지만 답을 얻을 수 없습니다. 당신은 LEFT를 사용할 수 있습니다

+2

이 링크 참조 : http://www.xaprb.com/blog/2006/05/26/how-to-write-full-outer-join-in-mysql/ –

답변

8

은 가입과 오른쪽은 가입 :

SELECT * FROM tableA LEFT JOIN tableB ON tableA.b_id = tableB.id 
UNION ALL 
SELECT * FROM tableA RIGHT JOIN tableB ON tableA.b_id = tableB.id 
WHERE tableA.b_id IS NULL 

이 주제에 대한 위키 백과에 대한 몇 가지 정보가있다 : Full outer join합니다.

위키 백과 문서에서는 MySQL에서 UNION을 사용하는 것이 좋습니다. 이것은 UNION ALL보다 약간 느리지 만 더 중요한 것은 항상 올바른 결과를 제공하지는 않을 것이므로 출력에서 ​​중복 행을 제거합니다. UNION 대신 UNION ALL을 사용하는 것이 좋습니다.

+1

이것은 정확히 @ haim evgi (페이지 링크를 통해). 감사. – understack

+2

N 테이블에 대해이 답변의 규모를 어떻게 조정합니까? 즉, 4 개 이상의 테이블에서 FULL OUTER JOIN을 에뮬레이트하는 방법은 무엇입니까? – Gili