如果之前有人问过我,我很抱歉。我很擅长开发,虽然我经常尝试搜索,但我不确定要寻找什么。
无论如何,我有一张表来计算每天输入的记录。它看起来像这样(每个记录用一个字母表示)(假设今天的日期是2013年1月27日):
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
在表格中检查每个新帖子,如果该记录在当天已经存在,它会更新计数,否则会创建新记录。
对于打印已添加“TODAY”的记录的页面,我有MySQL查询
SELECT * FROM `table` ORDER BY `date` DESC, `count` DESC LIMIT 1000
并使用php'if'语句仅打印表中日期('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
我如何组合这些重复记录并列出按计数排序的记录?这是获得“上周”记录计数的最佳方法,还是有另一种更好的表结构?
我很抱歉,如果这是一个愚蠢的问题,或者我的解释是啰嗦,但只是一些简单的指针将非常感激。
答案 0 :(得分: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
答案 1 :(得分: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
分组结果集