首页 > 解决方案 > 带有 where 子句的右外连接不返回预期结果

问题描述

我有一个完美运行的 SQL 语句:

SELECT 
    DailyRequest.*
FROM 
    DailyRequest
RIGHT OUTER JOIN
    Facilities ON FacilityID = Facilities.ID 

Facilities正如预期的那样,这显示了 中的所有记录。但是,我只需要显示指定日期的记录,但仍然是所有来自设施的记录。我认为下面的 SQL 会起作用,但事实并非如此。

此 SQL 仅显示以下记录DailyRequest

SELECT 
    DailyRequest.*
FROM
    DailyRequest
RIGHT OUTER JOIN
    Facilities ON FacilityID = Facilities.ID 
WHERE 
    RequestDate = '7/21/2021'

日期似乎引入了问题,但我不确定我做错了什么。我想显示连接表中的所有记录,即使它们不存在于DailyRequest.

标签: sqljoinleft-joinouter-joinright-join

解决方案


可以肯定的是,您需要在联接本身中应用日期限制才能正确影响结果。尝试:

SELECT 
DailyRequest.*
    from DailyRequest
        right outer join Facilities on FacilityID = Facilities.ID 
            and DailyRequest.RequestDate = '7/21/2021'

推荐阅读