首页 > 数据库 > mysql教程 > 为什么使用日期过滤器时我的 LEFT OUTER JOIN 无法返回预期结果?

为什么使用日期过滤器时我的 LEFT OUTER JOIN 无法返回预期结果?

Patricia Arquette
发布: 2025-01-17 14:13:09
原创
895 人浏览过

Why Does My LEFT OUTER JOIN Fail to Return Expected Results When Using Date Filters?

解决LEFT OUTER JOIN查询结果不符的问题

在SQL中,LEFT OUTER JOIN操作旨在即使右表中不存在对应数据,也能保留左表中的数据。然而,当LEFT OUTER JOIN没有产生预期结果时,可能会令人困惑。

假设您需要使用LEFT OUTER JOIN从三个表中检索数据。您希望获取Salesrep表中的信息,即使Prescriber和Prescriptions表中不存在匹配记录。当在WHERE子句中使用日期参数执行此查询时,您会遇到一个意外的结果:没有返回与任何数据无关的销售代表的行。

为了解决这个问题,关键在于将Prescriptions.filldate的约束条件从WHERE子句移动到JOIN的ON条件中。修改后的查询应类似于以下内容:

<code class="language-sql">LEFT OUTER JOIN prescriptions ON prescriber.dea_no = prescriptions.dea_no AND
                             prescriptions.filldate >= '09-01-12'
                             AND prescriptions.filldate < '10-01-12'</code>
登录后复制

最初,当日期参数位于WHERE子句中时,Prescriptions.filldate中具有NULL值的记录被错误地过滤掉了。通过将它们包含在ON条件中,即使没有相关的处方详细信息,销售代表仍将包含在结果集中,并适当地显示NULL值。

现在,执行查询时,您将成功获得Salesrep表信息,而不管Prescriber和Prescriptions表中的对应数据如何。

以上是为什么使用日期过滤器时我的 LEFT OUTER JOIN 无法返回预期结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

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