SQL:在SQL Server 2012中使用外连接
问题描述:
我在学习如何在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
正常的内部连接会忽略最后一行,因为它没有匹配的男孩城市。
任何人都可以帮助我吗?
谢谢!
迈克
答
你正在寻找一个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
您现有的查询连接两次男孩,一次使用旧连接语法,一次使用正确连接。使用完全外连接,您只需将每个表包含一次。
答
您可以在两个表上使用FULL OUTER JOIN
。
您可以找到更多的细节here。
例如:
SELECT boys.name, boys.city, girls.name, girls.city
FROM girls
FULL OUTER JOIN boys ON boys.city=girls.city;
的'男孩子,girls'联接语法是较旧的语法(术语我想不起来了个大气压),并使用一个隐含的内部联接这就是为什么你的部分原因没有看到你想要的结果。 – 2014-10-06 15:12:59
为什么地球上你有每个性别的表格? – Kermit 2014-10-06 15:45:36
它只是一个无意义的表格来说明我的问题 – Mike 2014-10-06 15:51:21