首页 > 数据库 > mysql教程 > 为什么我的 T-SQL LEFT JOIN 只返回两行而不是三行?

为什么我的 T-SQL LEFT JOIN 只返回两行而不是三行?

Mary-Kate Olsen
发布: 2025-01-06 00:55:39
原创
927 人浏览过

Why is my T-SQL LEFT JOIN only returning two rows instead of three?

左连接未产生预期结果

提供的 T-SQL 代码旨在在 #appSteps 和 #appProgress 两个表之间执行左连接,但结果集仅包含两行,而不是预期的三.

问题

出现这个问题是因为WHERE子句中包含了右侧表(#appProgress):

where s.section is not null
and p.appId = 101
登录后复制

解释

左连接旨在返回左表中的所有行,包括右表中没有匹配记录的行。但是,通过在 WHERE 子句中包含右侧表,查询可以像 INNER JOIN 一样有效地运行,过滤掉左侧表中没有匹配右侧表中记录的行。

解决方案

要获得想要的结果集,请将右侧表的过滤条件移至左侧表的 ON 子句JOIN:

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
登录后复制

通过将条件放在ON子句中,首先连接两个表中匹配的行,然后应用WHERE子句进一步过滤结果,确保只有非空的行返回部分的值。

以上是为什么我的 T-SQL LEFT JOIN 只返回两行而不是三行?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板