Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-由10位最新作者中的每一位选择最新的帖子_Mysql - Fatal编程技术网

MySQL-由10位最新作者中的每一位选择最新的帖子

MySQL-由10位最新作者中的每一位选择最新的帖子,mysql,Mysql,我有一个包含许多不同作者的博客文章的表格。我想做的是展示10位最新作者的最新文章 每个作者的帖子只是按顺序添加到表中,这意味着可能会有一个作者的帖子运行。我花了很长时间提出一个查询来完成这项工作 这给了我最后10个唯一的作者ID;它是否可以作为每个作者获取最新文章的子选项 SELECT DISTINCT userid FROM posts ORDER BY postid DESC LIMIT 10 您需要通过postid DESC对子查询每个作者的最后一个postid和订单。然后,将该结果连

我有一个包含许多不同作者的博客文章的表格。我想做的是展示10位最新作者的最新文章

每个作者的帖子只是按顺序添加到表中,这意味着可能会有一个作者的帖子运行。我花了很长时间提出一个查询来完成这项工作

这给了我最后10个唯一的作者ID;它是否可以作为每个作者获取最新文章的子选项

SELECT DISTINCT userid
FROM posts
ORDER BY postid DESC 
LIMIT 10

您需要通过postid DESC对子查询每个作者的最后一个postid和订单。然后,将该结果连接到
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);

用户ID上不应该需要复合索引,因为postID无论如何都是唯一标识符,并且只存在于一位作者的文章中。@DRapp需要复合索引来加速子查询AA(完全索引扫描vs完全表扫描)。这很接近-它返回每个用户ID的最新postID,但行中的其余数据不匹配。例如,这不起作用:按用户id顺序按id描述从posts组中选择userid、title、bodytext、MAX(id)id LIMIT 10right如果需要所有字段,很遗憾,您需要一个子查询。我编辑了我的答案。太好了,很高兴我帮了忙。接受正确答案会更大:)
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
SELECT userid
     , MAX(postid) AS lastpostid
FROM posts
GROUP BY userid
ORDER BY lastpostid DESC 
LIMIT 10