我正在使用sqlite3后端开发一个论坛。
我的目标是找到最后20个主题下面有最新的帖子。我试过这个:

SELECT * FROM Topics INNER JOIN Posts ON Topics.ID = Posts.TopicID ORDER BY Posts.Modified DESC LIMIT 20

这不完全是我想要的,因为它将重复同一个主题,每次它下面有一个最近的帖子。我只想要一个主题只给一次。

最佳答案

你必须为每个主题获取一篇最新的文章,然后按此排序:

SELECT Topics.*,
       (SELECT MAX(Modified)
        FROM Posts
        WHERE TopicID = Topics.ID
       ) AS LastModified
FROM Topics
ORDER BY LastModified DESC
LIMIT 20

通过连接也可以这样做:
SELECT Topics.*,
       MAX(Posts.Modified)
FROM Topics
JOIN Posts ON Topics.ID = Posts.TopicID
GROUP BY Topics.ID
ORDER BY MAX(Posts.Modified) DESC
LIMIT 20

关于mysql - 从基于另一个表的表中选择条目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30289761/

10-10 03:57