首页 > 数据库 > mysql教程 > 为什么我的左外连接只返回左表的部分数据?

为什么我的左外连接只返回左表的部分数据?

Susan Sarandon
发布: 2025-01-23 16:08:10
原创
381 人浏览过

Why Does My Left Outer Join Only Return Partial Data From the Left Table?

左外连接和左表中的不完整数据

了解连接条件如何影响左外连接的结果至关重要。 条件放置不正确可能会导致左表中的数据不完整。

让我们检查一下这个查询:

<code class="language-sql">SELECT day.days, COUNT(*) AS opens
FROM day
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date))
WHERE tracking.open_id = 10
GROUP BY day.days;</code>
登录后复制

此查询旨在计算每日页面打开次数。 但是,即使 day 表有更多天,它也可能只显示几天。 问题出在WHERE子句上。

连接条件ON day.days = DAY(FROM_UNIXTIME(open_date))正确匹配天数。 但是,WHERE tracking.open_id = 10 连接之后过滤 ,删除 open_id = 10 表中没有 tracking 的任何日期。

要包含左表 () 中的 所有 day 天,无论 tracking 中的匹配项如何,请将 open_id 条件移至 ON 子句中:

<code class="language-sql">SELECT day.days, COUNT(*) AS opens
FROM day
LEFT OUTER JOIN tracking
ON day.days = DAY(FROM_UNIXTIME(open_date)) AND tracking.open_id = 10
GROUP BY day.days;</code>
登录后复制

此更正后的查询可确保包含所有日期,提供完整的每日页面打开计数,即使某些日子在 tracking 表中缺少带有 open_id = 10 的条目。 这些天的 COUNT(*) 将返回 0。

以上是为什么我的左外连接只返回左表的部分数据?的详细内容。更多信息请关注PHP中文网其他相关文章!

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