首页 > 解决方案 > SQL 查询,带有 NULL 的 LEFT JOIN

问题描述

我正在尝试按公司和日期创建小时列表,即使公司没有该日期的数据。我已经尝试左加入日历表并在其日期和公司上分组,但无济于事。

SELECT cal.date, comp.name, comp.hours
FROM company AS comp
LEFT JOIN calendar AS cal ON cal.date=comp.date
GROUP BY cal.date, comp.name

当公司在该日期没有小时数时,我希望得到 NULL 输出,如下所示:

2018-01-01   Company A   100
2018-01-01   Company B   NULL
2018-01-02   Company A   NULL
2018-01-02   Company B   NULL
2018-01-03   Company A   100
2018-01-03   Company B   50

但它只返回可以找到数据的行,就好像我使用了 INNER JOIN。任何帮助,将不胜感激。谢谢!

标签: mysqlsqljoinleft-join

解决方案


您可以将日历用作左表,在这种情况下,您将获得所有日期

SELECT cal.date, comp.name, comp.hours
FROM calendar  AS cal  
LEFT JOIN company AS comp ON cal.date=comp.date

我没有找到任何聚合函数,所以我删除了 group by


推荐阅读