首页 > 数据库 > mysql教程 > 为什么我的SQL左外连接返回的行比左表的行还要多?

为什么我的SQL左外连接返回的行比左表的行还要多?

Linda Hamilton
发布: 2025-01-25 01:17:09
原创
772 人浏览过

Why Does My SQL LEFT OUTER JOIN Return More Rows Than the Left Table?

>理解sql左外连接:为什么比左表的行更多? >对的常见误解是,它总是从左表返回确切的行数。 虽然它

包括

LEFT OUTER JOIN左表的所有行,但如果右表中有重复匹配,则实际上可以产生更多>行。> 让我们用一个示例来说明这一点: 考虑此查询:

此查询的目的是用

(右表)加入

>(左表)。 直觉上,人们可能会期望最多4935行(假设这是
SELECT     
    SUSP.Susp_Visits.SuspReason, SUSP.Susp_Visits.SiteID
FROM
    SUSP.Susp_Visits 
LEFT OUTER JOIN
    DATA.Dim_Member ON SUSP.Susp_Visits.MemID = DATA.Dim_Member.MembershipNum
登录后复制
>的计数)。但是,实际结果可能更大。

> Susp_Visits的原因是ADim_Member在结果集中创建一个行,以Susp_Visits在左表和右表之间的每个

匹配。 如果

中的一行匹配LEFT OUTER JOIN中的多行,则将在输出中重复,从而产生比最初预期的更多行。 因此,在之后,一个大于预期的行表示,左表中的至少一个行在右表中基于联接条件在右表中具有多个相应的行。 Susp_Visits解决这个问题:Dim_Member

LEFT OUTER JOIN仅需要左表数据?

消除重复?

>在您的
    语句中添加a
  • 子句:这将从结果集中删除重复行。 SELECT>这阐明了
  • 的行为,并为处理结果集超过左表中的行数提供了解决方案。

以上是为什么我的SQL左外连接返回的行比左表的行还要多?的详细内容。更多信息请关注PHP中文网其他相关文章!

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