表格: |
(`post_id`, `forum_id`, `topic_id`, `post_time`)
(79, 8, 4, '2012-11-19 06:58:08');
(80, 3, 3, '2012-11-19 06:58:42'),
(81, 9, 9, '2012-11-19 06:59:04'),
(82, 11, 6, '2012-11-19 16:05:39'),
(83, 9, 9, '2012-11-19 16:07:46'),
(84, 9, 11, '2012-11-19 16:09:33'),
查询:
SELECT post_id, forum_id, topic_id FROM posts
GROUP BY topic_id
ORDER BY post_time DESC
LIMIT 5
结果:
[0] => [post_id] => 84 [forum_id] => 9 [topic_id] => 11
[1] => [post_id] => 82 [forum_id] => 11 [topic_id] => 6
[2] => [post_id] => 81 [forum_id] => 9 [topic_id] => 9
[3] => [post_id] => 80 [forum_id] => 3 [topic_id] => 3
[4] => [post_id] => 79 [forum_id] => 8 [topic_id] => 4
问题:
如何修改查询语句以返回post_id->83而不是post_id->81?它们都具有相同的论坛和主题ID,但是post_id->81比post_id->83早。
但似乎Group By获取的是“第一个”记录而不是“最新”的记录。
我尝试将查询更改为
SELECT post_id, forum_id, topic_id, MAX(post_time)
但是这会返回帖子ID 81和83
SELECT * FROM [table] GROUP BY [column]
即可选择最新的而不是最旧的,这似乎很合理,对吧? - Jean-Paul