如何从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如果成功了,很好。请把我的答案投赞成票,如果它能满足你的需要,请把它改正。考虑用更多的说明来澄清你真正想要问的东西。