我是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
答案 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`
此查询将选择表中的每个条目,并将计算行
我建议您使用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 = ''";