首页 > 解决方案 > 简单 SQL Express 完全连接查询在应该返回空值时不返回

问题描述

这是查询:

SELECT        
    AttributeName.ID, Attributes.LinkAnalyses, Attributes.Value, AttributeName.Name
FROM            
    AttributeName 
FULL OUTER JOIN
    Attributes ON AttributeName.ID = Attributes.LinkName

我应该返回空值,因为 LinkAnalyses = 88 的链接名最多为 10,而属性名的链接名最多为 21。我应该得到 11 个空值,但我没有

输出:

属性表:

属性名表:

标签: sqlsql-serversql-server-express

解决方案


完全连接将根据您在查询中使用的连接键起作用。

在您的查询中,您使用 AttributeName.ID = Attributes.LinkName,因此如果 AttributeName 中的任何 ID 在表 Attributes 的 LinkName 列中缺失(反之亦然)将返回空行。

您的列 Attributes.LinkAnalysis 中没有关系。

如果你想要 LinkAnalysis 明智的完全连接,你可以使用下面的查询

select 
Id,Attributes.LinkAnalyses,Value,Name
from 
( SELECT  
 an.LinkAnalyses,AttributeName.ID,AttributeName.Name
 FROM            
 (Select distinct LinkAnalyses from Attributes ) an
  ,  AttributeName 
) A
full join Attributes on Attributes.LinkAnalyses=A.LinkAnalyses and A.ID =Attributes.LinkName

推荐阅读