我有一个表格,其中包含许多不同作者的博客帖子。我想要做的是展示10位最新作者的最新帖子。
每个作者的帖子只是按顺序添加到表中,这意味着可能会有单个作者的帖子。我花了很长时间才想出一个查询来完成这个任务。
这给了我最后10个唯一的作者ID;它可以用作子选择来获取每个作者的最新帖子吗?
SELECT DISTINCT userid
FROM posts
ORDER BY postid DESC
LIMIT 10
发布于 2012-04-17 05:27:12
select userid,postid, win from posts where postid in (
SELECT max(postid) as postid
FROM posts
GROUP BY userid
)
ORDER BY postid desc
limit 10
http://sqlfiddle.com/#!2/09e25/1
发布于 2012-04-17 05:19:43
您需要一个子查询来查询每个作者的最后一个postid和order by postid DESC。然后,将结果连接到posts
表:
SELECT B.* FROM
(
SELECT * FROM
(
SELECT userid,MAX(postid) postid
FROM posts GROUP BY userid
) AA
ORDER BY postid DESC
LIMIT 10
) A INNER JOIN posts B
USING (user_id,post_id);
确保你有这个索引
ALTER TABLE posts ADD INDEX user_post_ndx (userid,postid);
发布于 2012-04-17 06:02:21
SELECT userid
, MAX(postid) AS lastpostid
FROM posts
GROUP BY userid
ORDER BY lastpostid DESC
LIMIT 10
https://stackoverflow.com/questions/10181736
复制相似问题