【问题标题】:Right outer join with where clause not returning expected results带有 where 子句的右外连接不返回预期结果
【发布时间】:2021-09-29 22:12:50
【问题描述】:

我有一个完美运行的 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 中不存在。

【问题讨论】:

  • 切换表格的顺序。使用LEFT JOIN。并将条件移至ON 子句。
  • 谢谢,戈登。你能粘贴你推荐的代码吗?
  • 。 .您所写的查询实际上没有意义。我不明白你为什么要返回完全是 NULL 的行,但没有匹配项。
  • 我需要这些行中的一些列(大多数列数据都是空白的,这很好)。出于某种奇怪的原因,有人给哈尼投了反对票,但他的解决方案非常有效。感谢您的评论。

标签: sql join left-join outer-join right-join


【解决方案1】:

非常确定您需要在联接本身中应用日期限制才能正确地产生结果。试试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多