我在运行 sql server 查询时遇到了不寻常的查询结果。
需要注意的重要表是Code_Structure_Type。它包含列Code_Structure_Type_Id smallint、Name char(50)和一些其他未在此处使用的列。
我的查询
SELECT DISTINCT A1.A1_Id AS Code_Unit_Attribute_Id,
A1.Name AS Code_Unit_Attribute_Name,
Code_Structure_Type.A1_Name AS Code_Attribute_Type
--, Code_Structure_Type.Code_Structure_Type_Id
FROM Defect
INNER JOIN Defect_Code_Unit
ON Defect.Defect_Id = Defect_Code_Unit.Defect_Id
INNER JOIN Code_Unit
ON Defect_Code_Unit.Code_Unit_Id = Code_Unit.Code_Unit_Id
INNER JOIN A1
ON Code_Unit.A1_Id = A1.A1_Id
INNER JOIN ERA_Module
ON Defect.ERA_Module_Id = ERA_Module.ERA_Module_Id
INNER JOIN Code_Unit_Type
ON Code_Unit.Code_Unit_Type_Id = Code_Unit_Type.Code_Unit_Type_Id
INNER JOIN Code_Structure_Type
ON Code_Unit_Type.Code_Structure_Type_Id = Code_Structure_Type.Code_Structure_Type_Id
WHERE ERA_Module.ERA_Project_Id = 472
AND ERA_Module.Is_Active = 1
AND Defect.Is_Closed = 0
AND Defect_Code_Unit.Is_Active = 1
AND Code_Structure_Type.Name = 'Pega Rules'
--AND Code_Structure_Type.Code_Structure_Type_Id = 2
AND A1.A1_Id > 0
AND Code_Unit.Scope_Id = 1
此查询返回给我一个不正确的单行。此查询的预期结果应该是 none,因为我们没有 'Pega Rules' Code_Structure_Type 的缺陷。
如果我取消注释这一行
--, Code_Structure_Type.Code_Structure_Type_Id
我没有得到正确的结果。
此外,如果我从 Code_Structure_Type_Id 过滤,它是“Pega 规则”而不是 Code_Structure_Type.Name,我也会得到正确的结果,这是没有的。为此,我取消注释此行
--AND Code_Structure_Type.Code_Structure_Type_Id = 2
并评论这一行
AND Code_Structure_Type.Name = 'Pega Rules'
所以基本上我在做同样的事情,并且在 Code_Structure_Type 表中没有像“Pega Rules”这样的其他名称,甚至没有关闭。该表中只有五行。
我需要了解这里发生了什么。
提前致谢。
执行计划的链接
文件,仅在使用“pega 规则”时 -使用“pega 规则”时的不正确_original.xml + 选择 -使用 id 时的正确_with_added_select.xml -正确的_with_Id.xml