Mysql根据日期计算行数

Wes*_*nal 2 php mysql pdo

好吧,我不知道它应该是什么标题,也不知道如何解释它,但我会尽力解释我的问题.

我有这个表包含一些专注于date_participatedfblike_point的数据.

在此输入图像描述

好吧,我想要的输出应该是

2013-03-20 1

2013-03-19 3

所以基本上,每个日期都会计算fblike_point的数量.

在2013-03-19它总共有3个fblike_point,在2013-03-20它总共有1个fblike_point

我的问题是,我输出的不是我想要的结果,我得到的结果是2013-03-19 4

它保持在1个日期并计算fblike_point的数量

这是我的代码.

$query = "SELECT DISTINCT date_participated, COUNT(fblike_point) as fblike FROM event_raffles WHERE ticket_id='". $ticket_id ."' AND event_table='". $event_table ."' AND status='1' ORDER BY date_participated DESC";
$result = db_query($query);

foreach ($result as $values) {
    echo $values->date_participated . " " . $values->fblike . "<br>";
}
Run Code Online (Sandbox Code Playgroud)

有什么解决方案吗?任何帮助,将不胜感激.:)

Lie*_*ers 5

您应该更改您的查询以使用GROUP BY而不是DISTINCT

SELECT date_participated, COUNT(fblike_point) as fblike 
FROM event_raffles
GROUP BY date_participated
Run Code Online (Sandbox Code Playgroud)

您使用的方法DISTINCT是获取所有唯一日期,并为每个结果添加整个结果集中返回的记录数量.

使用a GROUP BY允许您使用该组上可用的任何聚合函数.


编辑

正如@ysth所提到的,取决于COUNT您可能想要使用的SUM取决于可能具有的值fblike_point.

使用SUM实际上是更明智的行动方针.

  • 错误,如果fblike_point为null或1,则两者都将返回相同的值; 如果为0,则该行不会按总计数,但会按计数计算 (2认同)