获取最大时间低于定义的分组帖子

时间:2013-04-15 15:33:51

标签: mysql

我正在制作一个新闻Feed,需要能够根据评论找出帖子,而这本身很简单,我无法弄清楚如何才能获得"帖子& #34;最新评论的时间早于特定时间。

为了演示,这里是我的数据的过度简化版本:

+----+---------+------------+
| id |  Module |    Time    |
+----+---------+------------+
|  1 | Forum   | 1343739050 |
|  2 | Gallery | 1343739150 |
|  3 | Gallery | 1343739250 |
|  4 | Forum   | 1343739350 |
+----+---------+------------+

要获得最近评论的五个模块,我只需使用

SELECT module, max(time) FROM `comments` GROUP BY module ORDER BY max(time) DESC LIMIT 0, 5

将返回

+---------+------------+
|  Module |  max(Time) |
+---------+------------+
| Forum   | 1343739350 |
| Gallery | 1343739250 |
+---------+------------+

正是我想要的。 当我只想获得最重要的评论比特定时间更早的模块时,问题就出现了。 例如,早于1343739350(ID为4的评论时间),但是我只是抛出一个where子句,它仍将返回论坛,因为它有一个与之匹配的评论。

我疯狂猜测并尝试了

SELECT module, max(time) FROM `comments` GROUP BY module WHERE max(time) < 1343739350 ORDER BY max(time) DESC LIMIT 0, 5
然而,这对我来说是一厢情愿的想法。

所以问题是,如何编写一个可以执行此操作的mysql命令?

1 个答案:

答案 0 :(得分:1)

处理聚合列时,需要使用HAVING子句而不是WHERE子句,

SELECT module, max(time) 
FROM `comments` 
GROUP BY module 
HAVING max(time) < 1343739350 
ORDER BY max(time) DESC 
LIMIT 0, 5