sql - 如果不是所有行都存在,则来自不同表的 sql server 计数
问题描述
我试图从 2 个表中获取结果。第一个表是带有信息的 ID,来自第二个表我想根据某些条件计算第一个表中每个 id 的存在。这是我的代码:
SELECT p.stId, count(att.adate)
FROM payments p
LEFT JOIN Attendence att ON att.stId = p.stId
where p.cyear = 2018 and p.cmonth = 3 and p.cId = 10
and att.adate between '2018/03/01' and '2018/03/30 23:59:59.999' and att.cid
= 10
GROUP BY p.stId
从第一个表(p)我有 3 个 ID。但是当我运行它时,它只返回 1 个 ID。第二个表(t)中不存在的 id 不会给出任何结果。我想要做的是,如果第二个表中没有 id,我想为计数返回 0 (count(att.adate))
谢谢。
解决方案
将右侧表格条件从WHERE
移至ON
以获得真实left join
结果:
SELECT p.stId, count(att.adate)
FROM payments p
LEFT JOIN Attendence att ON att.stId = p.stId
and att.adate between '2018/03/01' and '2018/03/30 23:59:59.999' and att.cid
= 10
where p.cyear = 2018 and p.cmonth = 3 and p.cId = 10
GROUP BY p.stId
(在 中时WHERE
,您会得到常规inner join
结果。)
推荐阅读
- r - RStudio 中的检查功能
- java - 我想按值从 Firebase 实时数据库中删除值我没有它的关键
- vue.js - 无法设置 vuemapbox 地图的初始边界
- c++ - 如果输入大小太大,fstream::read() 读取为空
- mysql - 改进 covid-project 的 SQL 查询
- deep-learning - 减少唤醒词检测中的误报和置信度提高
- vim - taglist 适用于 gvim 而不是 vim
- python - Pandas:基于不同范围的棘手区间选择
- ios - 如何使 TableViewCell 动态化?
- laravel - 任何曾经在 laravel 中使用 Web Scraping 的人