gpt4 book ai didi

mysql - 使用 MySQL 选择不存在的数据

转载 作者:行者123 更新时间:2023-11-30 23:29:00 27 4
gpt4 key购买 nike

我正在尝试选择两个日期范围之间的数据。但是,并非所有数据都每天插入。下面是表格的示例:

mysql> SELECT * FROM attendance;
+------------+-------+
| date | total |
+------------+-------+
| 2012-07-02 | 100 |
| 2012-07-04 | 70 |
| 2012-07-05 | 78 |
+------------+-------+
3 rows in set (0.00 sec)

场景是我想获得从 2012-07-02 到 2012-07-04 的出勤总数。根据上面的数据我会得到

mysql> SELECT * FROM attendance WHERE date BETWEEN '2012-07-02' AND '2012-07-04';
+------------+-------+
| date | total |
+------------+-------+
| 2012-07-02 | 100 |
| 2012-07-04 | 70 |
+------------+-------+
2 rows in set (0.00 sec)

但是我的目标是将 2012-07-03 包含在结果中。

+------------+-------+
| date | total |
+------------+-------+
| 2012-07-02 | 100 |
| 2012-07-03 | 0 |
| 2012-07-04 | 70 |
+------------+-------+

这可以通过 MySQL 完成吗?我确实调查了temporary table .但仍无法达到目的。

最佳答案

您可以将日期枚举为派生伪表(使用 UNION),然后将其与您的数据连接

SELECT dates.date, COALESCE(attendance.total,0) AS total FROM (
SELECT '2012-07-02' AS date
UNION ALL SELECT '2012-07-03'
UNION ALL SELECT '2012-07-04'
) AS dates
LEFT JOIN attendance USING(date)

编辑:添加了 COALESCE 以在丢失的记录上返回 0 而不是 NULL

关于mysql - 使用 MySQL 选择不存在的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11686003/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com