1

我对 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

4 回答 4

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 的值。

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

于 2013-07-07T00:41:24.793 回答
1
select count(*) cnt
     , DATE(date_column) the_date
  from tbl
 group
    by date with rollup

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

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

于 2013-07-07T03:23:17.407 回答
0

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

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

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

要处理连接,您可以使用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";
?>
于 2013-07-07T00:12:11.583 回答
0
$sql = "SELECT COUNT(*) FROM table_name WHERE date = ''";
于 2013-07-07T00:29:20.907 回答