mysql - 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。任何帮助,将不胜感激。谢谢!
解决方案
您可以将日历用作左表,在这种情况下,您将获得所有日期
SELECT cal.date, comp.name, comp.hours
FROM calendar AS cal
LEFT JOIN company AS comp ON cal.date=comp.date
我没有找到任何聚合函数,所以我删除了 group by
推荐阅读
- datetime - 您如何才能真正使 DateTime.now() 保持最新?
- gulp - 从 gulp v3 迁移到 v4
- java - JPA 插入优化
- ruby-on-rails - 耙子任务没有在红宝石中调用工人工作
- python - 绘制干净的 JSON 股票价格数据
- c# - 如何使用表达式将方法调用附加到类似构建器的调用链?
- ruby - 当我尝试使用 React 下载时,Sinatra 使用 `send_file` 发送损坏的 .zip 文件
- javascript - 如何在android webview中顺利拖动和旋转图像
- angular - 无法在 AWS Cognito 用户池应用程序客户端的回调 URL 中使用哈希 (#)
- azure - Azure API 管理 + Azure 函数和托管标识