Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从mysql中选择字段的增量_Mysql_Sql - Fatal编程技术网

如何从mysql中选择字段的增量

如何从mysql中选择字段的增量,mysql,sql,Mysql,Sql,我有一个表格记录了一些网页每天的累计访问量。我想获取所有这些页面在特定日期的实际访问次数。这张桌子像 - record_id page_id date addup_number - 1 1 2012-9-20 2110 - 2 2 2012-9-20 1160 - ... ... ... ... - n

我有一个表格记录了一些网页每天的累计访问量。我想获取所有这些页面在特定日期的实际访问次数。这张桌子像

- record_id   page_id     date     addup_number
 - 1             1        2012-9-20     2110
 - 2             2        2012-9-20     1160
 - ...          ...          ...         ...
 - n             1        2012-9-21     2543
 - n+1           2        2012-9-21     1784
我想获取的结果如下:

 - page_id      date        increment_num(the real visit numbers on this date)
 - 1           2012-9-21      X
 - 2           2012-9-21      X
 - ...           ...         ...
 - N           2012-9-21      X
但我不想在php中这样做,因为它很耗时。我能用SQL指令或一些mysql函数得到我想要的吗?

更新:

SELECT today.page_id, today.date, (today.addup_number - yesterday.addup_number) as increment
 FROM myvisits_table today, myvisits_table yesterday
WHERE today.page_id = yesterday.page_id
    AND today.date='2012-9-21'
    AND yesterday.date='2012-9-20'
GROUP BY today.page_id, today.date, yesterday.page_id, yesterday.date
ORDER BY page_id
大概是这样的:

SELECT date, SUM(addup_number) 
FROM your_table 
GROUP BY date

嗯。您需要通过在“日期”列上联接并在联接的一侧添加一天来联接表本身

假设:

日期列是合法的日期类型,而不是字符串 每天都算是每页都没有空白 addup_number是某种类型的INT,如BIGINT、INT、SMALLINT等。。。 表_名称将替换您未指明的实际表名称 每一页每天只有一条记录。。。i、 e.没有页面在同一天有多个计数 您可以这样做:

SELECT t2.page_id, t2.date, t2.addup_number - t1.addup_number AS  increment_num
  FROM table_name t1
  JOIN table_name t2 ON t1.date + INTERVAL 1 DAY = t2.date
  WHERE  t1.page_id = t2.page_id

需要注意的一点是,如果这是一个巨大的表,并且date是一个索引列,则必须通过在on子句中添加一天来转换连接,从而使连接受到影响,但您将获得数据。

您误解了我的问题,我需要增量编号,例如,我在2012-9-21有2100次访问,在2012-9-22有2600次访问,我希望返回2600-2100=500,每一页1-N,大约100页或更多。你返回不同日期的所有页面总数我不是每天都在编辑最热门的网页,你误解了我的问题…我想要递增的数量,例如,我在2012-9-21有2100次访问,在2012-9-22有2600次访问,我想要2600-2100=500次返回,我想要每个页面1-N,大约100页或更多more@zoujyjs我已经更新了我的答案,现在我更了解你的需要了。我不能保证它是无错误的,我现在没有SQL shell,但也许它会为您指明正确的方向。Thk很多,我明天会试试~回家吧~我会告诉您结果@那么,结果如何?你设法让它工作了吗?我是否“远离真相”?这很有效,它可以在特定日期获得真实的访问次数。上面的答案更一般,因为它给出了所有日期的结果!谢谢!也许我应该为我糟糕的英语自责??为什么你们总是让我把总数加起来?haa…,我在上面解释过,请原谅我在这里复制和粘贴:。我想要增量编号,例如,我在2012-9-21有2100次访问,在2012-9-22有2600次访问,我想要2600-2100=500次返回,我想要每个页面1-N,大约100页或更多more@zoujyjs啊,更多challenging@zoujyjs看看上面的答案,它会让你得到你想要的东西!你的假设和我的假设完全一样。我得到了正确的结果!谢谢JOIN是一种我以前从未使用过的高级功能@zoujyjs如果成功了,很好。请把我的答案投赞成票,如果它能满足你的需要,请把它改正。考虑用更多的说明来澄清你真正想要问的东西。