我有以下sql查询
SELECT DATE_FORMAT(date,'%d.%m. %y') as date, COUNT(idStat) as number
FROM stat
WHERE IdGame = ? AND date >= ? AND date <= ?
GROUP BY date
它返回日期以及今天有多少人访问过游戏,但是当今天没有行时,如何返回0?
例如,db中不存在日期15.12.1993,但用户选择日期在15.10.1950和12.15.2020之间.
我想返回这个不存在的日期15.12.1993,但计数为0.
这甚至可能吗?
感谢帮助,
菲利普.
解决方法:
最好的方法是使用日历表方便地处理相关日期.然后,您可以使用左连接来获取日期.像这样的东西:
SELECT DATE_FORMAT(c.date,'%d.%m. %y') as date, COUNT(s.idStat) as number
FROM Calendar c LEFT JOIN
stat s
ON c.date = s.date AND s.IdGame = ?
WHERE c.date >= ? AND c.date <= ?
GROUP BY c.date;
如果你在每个日期都有游戏,但问题是特定的游戏不是一天,你可以使用这个捷径:
SELECT DATE_FORMAT(date,'%d.%m. %y') as date, SUM(IdGame = ?) as number
FROM stat
WHERE date >= ? AND date <= ?
GROUP BY date;
这并不适用于所有情况,但它可以是一个有用的捷径.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。