获取最后发布的用户ID(MySQL)

时间:2010-10-24 19:46:31

标签: sql mysql aggregate-functions

我有一点问题 - 我可以通过这个查询主题获得帖子数和最后一个帖子ID,但我无法弄清楚,如何获得正确的用户ID。我得到第一个帖子(最低ID)用户ID,但我想要最新的帖子...我尝试添加“ORDER BY id DESC”但这无济于事。任何想法怎么做?

SELECT 
    COUNT(`id`) AS `count`, 
    MAX(`id`) AS `last_post_id`, 
    `topic_id`, 
    `user_id` 
FROM `forum_posts` 
WHERE `topic_id` IN (326, 207, 251) 
GROUP BY `topic_id` 

2 个答案:

答案 0 :(得分:1)

您应该在创建帖子时存储在数据库中的时间戳上使用ORDER BY。这将确保您按时间而不是按ID对帖子进行排序,因为如果删除/添加帖子,ID可能会混乱。

答案 1 :(得分:0)

在您的查询中userid返回该组中任何用户ID的用户ID,这通常是优化器碰巧选择的任何索引中出现的第一个用户ID,但它不是必须是。

自行加入以从您感兴趣的ID的行中获取user_id:

SELECT T1.`count`, T1.last_post_id, T1.topic_id, T2.user_id
FROM (
    SELECT 
        COUNT(id) AS `count`,
        MAX(id) AS last_post_id,
        topic_id, 
    FROM forum_posts
    WHERE topic_id IN (326, 207, 251) 
    GROUP BY topic_id
) T1
JOIN forum_posts T2
ON T1.last_post_id = T2.id