SQL:在SQL Server 2012中使用外部联接
我试图学习如何在SQLServer中使用外部连接函数,以便select查询返回两个表中的所有值,甚至是不匹配的表 以下是我使用的两个示例表,男孩和女孩:SQL:在SQL Server 2012中使用外部联接,sql,sql-server,join,sql-server-2012,outer-join,Sql,Sql Server,Join,Sql Server 2012,Outer Join,我试图学习如何在SQLServer中使用外部连接函数,以便select查询返回两个表中的所有值,甚至是不匹配的表 以下是我使用的两个示例表,男孩和女孩: Boys: Name City Andrew Cape Town Mike Paphos Simon Amsterdam Girls: Name City Georgia Paphos Megan London Eva Amsterdam Stephi Cape Town 以下是我写的查询: SEL
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
普通内部连接忽略最后一行,因为它没有匹配的男孩城市
有人能帮我吗
谢谢
Mike您正在寻找一个双向的完整外部联接,而不是右外部联接
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
现有查询连接boys两次,一次使用旧的连接语法,一次使用右连接。使用完全外部联接时,每个表只需包含一次。可以在两个表上使用完全外部联接
你可以找到更多的细节
例如:
SELECT boys.name, boys.city, girls.name, girls.city
FROM girls
FULL OUTER JOIN boys ON boys.city=girls.city;
FROM boys,girls join语法是一种较老的语法,我不理解这个词,atm使用隐式的内部连接,这是你没有看到想要的结果的部分原因。你到底为什么要为每个性别都设置一个表?这只是一个无意义的表来说明我的问题FROM boys,girls RIGHT OUTER join boys-哈?此外,是否真的有任何一个城市,例如开普敦,最多只能有一个男孩和一个女孩?如果开普敦有两个女孩和一个男孩>,你预计会有什么结果?