2014-10-06 79 views
2

我在學習如何在SQL Server中使用OUTER JOIN函數,以便select查詢返回兩個表中的所有值,即使是不匹配的也是如此。SQL:在SQL Server 2012中使用外連接

下面是我使用(男孩和女孩)這兩個示例表:

Boys: 

Name City 
Andrew Cape Town 
Mike Paphos 
Simon Amsterdam 

Girls: 

Name City 
Georgia Paphos 
Megan London 
Eva  Amsterdam 
Stephi Cape Town 

這裏是我寫的查詢:我想返回

SELECT boys.name, boys.city, girls.name, girls.city 
    FROM boys, girls 
    RIGHT OUTER JOIN boys as men ON boys.city=girls.city; 

表如下:

boys.Name  boys.City  girls.name  girls.city  
Andrew  Cape Town  Stephi   Cape Town 
Mike   Paphos   Georgia   Paphos 
Simon   Amsterdam  Eva    Amsterdam 
NULL   NULL    Megan    London 

正常的內部連接會忽略最後一行,因爲它沒有匹配的男孩城市。

任何人都可以幫助我嗎?

謝謝!

邁克

+1

的'男孩子,girls'聯接語法是較舊的語法(術語我想不起來了個大氣壓),並使用一個隱含的內部聯接這就是爲什麼你的部分原因沒有看到你想要的結果。 – 2014-10-06 15:12:59

+1

爲什麼地球上你有每個性別的表格? – Kermit 2014-10-06 15:45:36

+0

它只是一個無意義的表格來說明我的問題 – Mike 2014-10-06 15:51:21

回答

4

你正在尋找一個FULL OUTER JOIN這是雙向的,而不是右外連接;

SELECT boys.name boys_name, boys.city boys_city, 
     girls.name girls_name, girls.city girls_city 
FROM boys 
FULL OUTER JOIN girls 
    ON boys.city=girls.city 

An SQLfiddle to test with

您現有的查詢連接兩次男孩,一次使用舊連接語法,一次使用正確連接。使用完全外連接,您只需將每個表包含一次。

0

您可以在兩個表上使用FULL OUTER JOIN

您可以找到更多的細節here

例如:

SELECT boys.name, boys.city, girls.name, girls.city 
    FROM girls 
    FULL OUTER JOIN boys ON boys.city=girls.city;