考虑到这个名为events
的简单表
date | reserved
-----------+---------
2019-11-13 | 1
2019-11-14 | 0
2019-11-15 | 1
运行以下查询,我可以检索未保留和保留事件的计数:
SELECT count(*) FROM `events` GROUP BY `reserved`
1
2
但是,如果所有事件都被保留,我将得到一行一列:
3
最简单的方法是什么
0
3
最佳答案
如果您满足于在单个记录上同时具有两个结果,则可以执行条件聚合:
select
sum(reserved = 0) not_reserved,
sum(reserved = 1) reserved
from mytable
在我看来,这是一个更明智的选择,因为它返回的信息(以列为单位)更容易理解,当以行的形式提供时(您如何知道哪些记录对应于未保留的计数,特别是如果您不排序结果?).
关于mysql - 如何在COUNT(*)中包含GROUP BY中不存在的值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58828205/