我在 mySQL 中使用以下 sql。
我不明白为什么我只得到一行作为输出。
select category, count(*) as counts
from table_1
where date_add between '2016-07-01' and '2016-07-31'
group by category
最佳答案
由于您按类别
进行分组,因此您首先需要查找的就是该日期范围内有多少个类别
。如果您在指定日期期间内有“n”个类别
,则理想情况下您的结果集应包含“n”行。
您的查询本身没有任何问题。我尝试了两个类别的查询,确实得到了预期的结果集。
如果您想要结果集中的所有类别,无论它们是否在结果集中,那么您可以执行以下操作:
select category, count(*) as counts
from tab
where date_add between '2016-07-01' and '2016-07-31'
group by category
union
select category, 0 as counts
from tab
where date_add not between '2016-07-01' and '2016-07-31'
group by category
请注意,这是一种简单的方法,但肯定不是最好的
这将显示所有类别,无论日期周期如何。您可以在这里看到 -> http://sqlfiddle.com/#!9/a3a9b/2 在这里查看 -> http://sqlfiddle.com/#!9/bdb979/1
如果您将 fiddle 中的数据集修改为具有三个类别,那么结果集将返回预期的 3 行。
在这里查看 -> http://sqlfiddle.com/#!9/ec7a8/1
再次强调,类别必须在该日期范围内出现,才能显示在结果集中。
希望这有帮助!!!
关于mysql - Group by 仅返回一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40128073/