MySQL:每天到目前为止计算数据库的行数

时间:2013-07-06 23:55:28

标签: php mysql database

我是SQL和PHP的新手,并且一直在讨论以下问题。

我正在寻找可以提供以下结果的SQL查询(或与PHP过滤相结合):基本上是每天添加或删除行的结果+到目前为止该行中的行数

示例:

2012-10-08 09:52:08    |   1 so far since beginning
2012-12-04 15:07:56    |   2 so far since beginning
2012-12-10 09:18:02    |   3 so far since beginning

...


2013-06-06 09:50:13    |   67 so far since beginning
2013-06-13 13:46:41    |   70 so far since beginning
2013-06-17 14:42:39    |   69 so far since beginning
2013-06-19 14:19:26    |   74 so far since beginning
2013-07-05 13:21:45    |   75 so far since beginning

4 个答案:

答案 0 :(得分:2)

您可以使用GROUP BY查找今天的记录,并使用子查询查找今天之前添加的行。例如,

SELECT DATE(t.datefield) AS date, COUNT(*) AS records_this_day, 
(SELECT COUNT(*) FROM mytable t2 WHERE t2.datefield < DATE(t.datefield)) AS records_before_this_day 
FROM mytable t GROUP BY DATE(t.datefield);

你会得到这样的结果:

date        records_this_day records_before_this_day
2010-02-04  27               0
2010-02-05  2                27
2010-02-06  1                29
2010-02-07  1                30

但它有点慢。使用它时,最好只累积records_this_day的值。

编辑:显然,如果删除了一行,那么该行的历史记录就消失了。所以这可能不是你想要的。

答案 1 :(得分:1)

select count(*) cnt
     , DATE(date_column) the_date
  from tbl
 group
    by date with rollup

注意 - 如果有几天没有任何条目,您将不会在此sql查询的结果集中获得该日期的行。

with rollup修饰符将添加一行,这将是所有行的计数。您可以识别该行,因为它将为the_date设置空值。或者,省略with rollup并自己对cnt列求和。

答案 2 :(得分:0)

要计算数据库中的条目,查询将为:

$query = SELECT COUNT(*) FROM `table`

此查询将选择表中的每个条目,并将计算行

要处理连接,您可以使用PDOmysql_*

我建议您使用PDO ,因为mysql_ *已被删除,正如官方文档所述:

  

自PHP 5.5.0起,此扩展程序已弃用,将来将被删除。

代码如下所示:

<?php
/** PDOs or MYSQL_* CONNECT HERE **/

echo date("Y-d-M h:m:s")."    |     ".$count." so far since beginning";
?>

答案 3 :(得分:0)

$sql = "SELECT COUNT(*) FROM table_name WHERE date = ''";