简单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个空值,但我什么都没有

输出

属性表:

AttributeName表:

解决方法

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

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

您的列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