php + MYSQL +获取n行一次

时间:2012-05-30 09:01:57

标签: php mysql foreach count

我有一个如下所示的数据库:(日期格式为strtotime

ID  Date            
1   1338366170000
2   1337761370000
3   1337761370000
4   1337761370000
5   1337156570000
6   1331713370000
7   1331713370000

正如您所看到的,某些条目来自同一天。我现在想要了解每个日期和计数的频率。

所以最终结果如下:

Date: 1338366170000
Count: 1

Date: 1337761370000
Count: 3

Date: 1337156570000
Count: 1 

Date: 1331713370000
Count: 2 

我目前正在这样做以获取所有日期并计算每个日期:

首先我抓住所有行:

$stats      = $sql->query("SELECT * FROM stats_clicks");

现在,我认为当我尝试计算具有相同日期的条目时问题就开始了:我遍历所有结果并搜索每个日期并计算它。

foreach($sql->get() as $result){

    //Sum clicks for each date
    $date   = $result["date"];

    $stats  = $sql->query("SELECT * FROM stats_clicks WHERE date = '$date'");
    $count  = count($sql->get());

    echo "Date: $date<br>Count: $count<br><br>";

}

输出结果为:

Date: 1338366170000
Count: 1

Date: 1337761370000
Count: 3

Date: 1337761370000
Count: 3

Date: 1337761370000
Count: 3

Date: 1337156570000
Count: 1 

Date: 1331713370000
Count: 2 

Date: 1331713370000
Count: 2 

如何避免多次输出每个日期,而是每次只用正确的计数输出一次?

2 个答案:

答案 0 :(得分:4)

SELECT `Date`, COUNT(`Date`) as `Count`
FROM stats_clicks
GROUP BY `Date`

结果

Date    Count
1331713370000   2
1337156570000   1
1337761370000   3
1338366170000   1

答案 1 :(得分:0)

使用此查询。您将得到正确的计数而不重复。 SELECT日期,计数(*)FROM stats点击GROUP BY日期;