0

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

无论如何,所以我有一个表格,可以计算每天输入的记录。它看起来像这样(每条记录由一个字母表示)(假设今天的日期是 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('Ymd') = 的记录date。所以只打印当天输入的记录和相应的计数。- 上表将产生结果:

1. B 7 
2. A 4

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

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

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

如果这是一个愚蠢的问题或者我的解释冗长,我再次感到抱歉,但只有一些简单的指针将不胜感激。

4

2 回答 2

0

使用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
于 2013-02-02T16:03:29.167 回答
0

试试这个

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如果需要,您可以对结果集进行分组

于 2013-02-02T16:04:07.760 回答