【问题标题】:Selecting entries from a table based on another table根据另一个表从一个表中选择条目
【发布时间】:2015-05-17 17:19:57
【问题描述】:

我正在开发一个带有 SQLITE3 后端的论坛。

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

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

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

【问题讨论】:

    标签: mysql sql database sqlite


    【解决方案1】:

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

    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
    

    【讨论】:

    • 谢谢!这正是我想要的:)
    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    相关资源
    最近更新 更多