根据另一个表从表中选择条目

时间:2015-05-17 17:19:58

标签: mysql sql database sqlite

我正在使用SQLITE3后端的论坛上工作。

我的目标是找到最近发布最近帖子的20个主题。我试过这个:

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

这并不是我想要的,因为它会在每次最近的帖子下重复相同的主题。我只想要一个只给出一次的主题。

1 个答案:

答案 0 :(得分:2)

您必须为每个主题获取一个最新帖子,然后按此排序:

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