2012-08-16 3 views
3

SQL 테이블에서 일반적이고 드문 기록을 얻고 TableB의내가 견인 테이블 TableA의 이름을 지정한

우리가 TableA의 가정 해 봅시다

Id TableAName 
------------------ 
1  11 
2  12 
3  13 
4  14 
5  15 

우리가 내가 다음과 같은 결과를 원하는 TableB의

Id TableBName 
---------------- 
1  11 
2  22 
3  23 
4  24 
5  25 

을 가정 해 봅시다

TableAName TableBName 
------------------------- 
    11   11 
    12   Null 
    13   Null 
    14   Null 
    15   Null 
    Null   22 
    Null   23 
    Null   24 
    Null   25 

나는이 결과를 얻기가 혼란 스럽다. 두 열 모두 한 행의 표시와 동일한 값을 가지면 레코드가 필요합니다. 그렇지 않으면 그렇지 않습니다.

어떻게하면됩니까?

답변

3

표준 SQL :

SELECT 
    A.TableAName, B.TableBName 
FROM 
    TableA A 
    FULL OUTER JOIN 
    TableB B ON A.TableAName = B.TableBName 

MySQL이

SELECT 
    A.TableAName, B.TableBName 
FROM 
    TableA A 
    LEFT OUTER JOIN 
    TableB B ON A.TableAName = B.TableBName 
UNION 
SELECT 
    A.TableAName, B.TableBName 
FROM 
    TableA A 
    RIGHT OUTER JOIN 
    TableB B ON A.TableAName = B.TableBName 

편집을 가입 FULL OUTER를 지원하지 않습니다는, 당신은 같은 순서로 얻을이를 추가 할 수 있습니다

@Dems 삭제 대답에서 촬영 이상

ORDER BY 
    COALESCE(A.TableAName, B.TableAName) 
관련 문제