首页 >数据库 >mysql教程 >为什么我的 T-SQL LEFT JOIN 返回的行数少于预期?

为什么我的 T-SQL LEFT JOIN 返回的行数少于预期?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-04 02:36:40275浏览

Why Does My T-SQL LEFT JOIN Return Fewer Rows Than Expected?

T-SQL Left Join 未产生预期结果

在此查询中,#appSteps 和 #appProgress 两个表之间的 LEFT JOIN 操作,没有返回所需的结果集。预期结果集包含三行,但实际结果只有两行。

提供的 SQL 查询如下:

select p.appId, s.stepId, s.section, p.start
from #appSteps s with (nolock)
left join #appProgress p on s.stepId = p.stepId
where s.section is not null
and p.appId = 101

问题源于包含右侧WHERE 子句中的表 (#appProgress)。要纠正此问题,应将条件移至 LEFT JOIN 的 ON 条件:

Select    P.appId, S.stepId, S.section, P.start
From      #appSteps    S   With (NoLock)
Left Join #appProgress P   On  S.stepId = P.stepId 
                           And P.appId = 101
Where     S.section Is Not Null

此修改可确保在 LEFT JOIN 之后计算 WHERE 子句,从而防止从 LEFT JOIN 中过滤出 NULL 结果加入。通过将条件放在 ON 子句中,LEFT JOIN 可以有效地按预期运行,返回左表 (#appSteps) 中的所有行以及右表 (#appProgress) 中的匹配行,以及不匹配行的 NULL。

以上是为什么我的 T-SQL LEFT JOIN 返回的行数少于预期?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn