2012-08-16 75 views
3

我已經拖表命名錶A和表B從SQL表獲取常見和不常見的記錄

讓我們假設表A

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

讓我們說表B

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不支持FULL OUTER JOIN

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 

編輯,從@Dems刪除答案

您可以添加此得到同樣的順序取以上

ORDER BY 
    COALESCE(A.TableAName, B.TableAName)