我正在开发一个需要能够根据评论找出帖子的新闻提要,虽然这本身很简单,但我无法弄清楚如何只获取最新评论比特定评论更早的“帖子”时间。
为了演示,这里是我的数据的一个过于简化的版本:
+----+---------+------------+
| 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 子句,它仍然会返回 Forum,因为它有一个与之匹配的评论。
我做了一个疯狂的猜测并尝试了
SELECT module, max(time) FROM `comments` GROUP BY module WHERE max(time) < 1343739350 ORDER BY max(time) DESC LIMIT 0, 5
然而,结果证明这是我的一厢情愿。
所以问题是,我如何编写一个可以做到这一点的 mysql 命令?