我有一点问题 - 我可以通过这个查询主题获得帖子数和最后一个帖子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`
答案 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