mysql单表,选择最近1天并包含空行

8fsztsew  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(246)

我在stackoverflow上搜索过类似的问题,但我不明白如何使它工作,我想做什么。。。
所以,我想从数据库中获取最近1天的会议,并获取总会议计数,如果当天没有数据,还包括空行
假设当前日期为2020年6月6日

Meeting_Table

+-------------------+---------------+--------------------+
| Meeting_ID        | User_ID       | Date_Start         |
+-------------------+---------------+--------------------+
| 101010            |             1 |6/5/2020 5:30:00 AM |
| 101011            |             2 |6/5/2020 4:30:00 AM |
| 101012            |             3 |6/4/2020 3:30:00 AM |
| 101013            |             4 |6/3/2020 8:30:00 AM |
| 101014            |             5 |6/3/2020 6:30:00 AM |
+-------------------+---------------+--------------------+

User_Table
+-------------------+---------------+
| User_Name         | User_ID       |
+-------------------+---------------+
| Keny              |             1 |
| Jhon              |             2 |
| Cira              |             3 |
| kyle              |             4 |
| Mandy             |             5 |
+-------------------+---------------+

我只想在结果中显示从昨天开始的日期(间隔-1天)

+-------------------+---------------+
| User_Name         | Meeting_Count |
+-------------------+---------------+
| Keny              |             1 |
| Jhon              |             1 |
| Cira              |             0 |
| kyle              |             0 |
| Mandy             |             0 |
+-------------------+---------------+

感谢您的帮助:)

k2arahey

k2arahey1#

这看起来像一个 left join 和聚合:

select u.user_id, u.user_name, count(m.user_id)
from user_table u left join
     meeting_table m
     on m.user_id = u.user_id and
        m.date >= curdate() - interval 1 day and
        m.date < curdate()
group by u.user_id, u.user_name;

笔记:
这包括 user_id 在聚合中,以防两个用户同名。
日期过滤进入 on 条款,而不是 where 条款。

相关问题