1

我在运行 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

4

0 回答 0