我对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
最佳答案
可以使用“分组依据”查找今天的记录,使用子查询查找今天之前添加的行。例如,
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
但有点慢。当你使用它的时候,最好今天就把记录的价值累积起来。
编辑:很明显,如果一行被删除,那么该行的历史记录就消失了。所以这可能不是你想要的。