【问题标题】:Combine Table Records per Day to Create 'Last Week' page每天合并表记录以创建“上周”页面
【发布时间】:2013-02-02 15:44:17
【问题描述】:

如果之前有人问过这个问题,我深表歉意。我对开发非常陌生,虽然我尝试了很多搜索,但我不确定要寻找什么。

无论如何,我有一个表格,可以计算每天输入的记录。它看起来像这样(每条记录由一个字母表示)(假设今天的日期是 27/01/2013):

RECORD | COUNT | DATE 
------A-----|-----4-----|27/01/2013  
------B-----|-----7-----|27/01/2013
------B-----|-----3-----|24/01/2013
------C-----|-----8-----|22/01/2013 
------A-----|-----2-----|19/01/2013   

在表中检查每个新帖子,如果记录在当天已经存在,则更新计数,否则创建新记录。

对于打印已添加“今天”的记录的页面,我有 MySQL 查询

SELECT * FROM `table` ORDER BY `date` DESC, `count` DESC LIMIT 1000

并使用 php 'if' 语句仅打印表中 date('Y-m-d') = date 的记录。所以只打印当天输入的记录和相应的计数。 - 上表会产生结果:

1. B 7 
2. A 4

我想要一个打印上周输入的记录的页面。我知道我可以使用DATE_SUB(now(),INTERVAL 1 WEEK) AND NOW() 来打印上周的记录,但我需要复制要合并的记录并将计数加在一起。所以该表的结果如下所示:

1. B 10
2. C 8 
3. A 4

我将如何合并这些重复记录并获得按计数排序的记录列表?这是获取“上周”记录数的最佳方法,还是有其他更好的表结构?

如果这是一个愚蠢的问题,或者我的解释冗长,我再次感到抱歉,但我们将不胜感激。

【问题讨论】:

    标签: mysql date count


    【解决方案1】:

    试试这个

    SELECT `record`, SUM(`count`) AS `count` 
      FROM `table` 
     WHERE `date` > DATE_SUB(CURDATE(),INTERVAL 1 WEEK)
     GROUP BY `record`
     ORDER BY `count` DESC 
    

    如果需要,您可以LIMIT 1000 分组结果集

    【讨论】:

    • 非常感谢!真的很感激:)
    【解决方案2】:

    使用GROUP BY 将允许您将相关记录组合在一起

    SELECT `record`
         , SUM(`count`) AS `count`
    FROM `table` 
    WHERE `date` > `date` - INTERVAL 1 WEEK
    GROUP BY `record`
    ORDER BY `count` DESC 
    LIMIT 1000
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 2015-03-01
      • 1970-01-01
      • 2023-03-15
      • 2014-04-24
      相关资源
      最近更新 更多