sql - 简单 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.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
推荐阅读
- python - 运行外部命令的 Asyncio 问题
- mysql - 如何输出从一家特定商店获得所有订单的客户名称?
- android-studio - 步进传感器不计入文本视图(在片段中)
- c++ - c++ 为什么在 c++ 中跳过超过 3 级的循环
- exceljs - 将列格式化为货币
- python - Python、PySceneDetect 库:如何使用亮度法剪切场景?
- bash - 嵌套的 herodoc 操作顺序
- java - 读取带有 DOCTYPE SYSTEM ".dtd" 错误的 xml 文件
- docker - 创建一个 1 小时后自动退出的 docker 容器
- reporting-services - 停止 ReportServer 执行日志 删除