获取最新条目并加入另一个表

时间:2013-06-27 01:03:37

标签: mysql sql

我正在尝试获取topicID所在的最新帖子的用户名和时间戳,例如88.

用户

id      |  username    
--------|----------
45234   | kaka   
32663   | lenny  
52366   | bob  

帖子

id      |  message  | topicID | timestamp | userID
--------|-----------|---------|-----------|-------
675     | hello     | 88      | 100       | 32663
676     | hey       | 88      | 200       | 45234
677     | howdy     | 88      | 300       | 52366

所以在这里我想要postID 677和用户bob。

我可以在单个SQL查询中执行此操作吗?

如果我可以实现这一点会很棒:

SELECT topics.id, topics.subject, topics.forum_id
FROM topics WHERE topics.forumID = 16

2 个答案:

答案 0 :(得分:1)

未经测试,但我认为以下查询可以满足您的需求:

SELECT Users.username, Posts.timestamp
FROM Users JOIN Posts on Users.id = Posts.userID
WHERE Posts.topicID = 88
ORDER BY Posts.timestamp DESC
LIMIT 1

答案 1 :(得分:1)

假设表Topic与表Post Topic.ID = Post.TopicID相关联,并且您希望获得与之关联的最新post,您可以拥有一个基本上获得的子查询每个id的最新topicID假设它被设置为自动递增列),并将结果加到表Post上以获取其他列。您还需要加入表User以获取发布条目的用户的名称。

SELECT  a.id, 
        a.subject, 
        a.forumid,
        b.message,
        b.timestamp,
        d.username
FROM    topic a
        INNER JOIN Posts b
            ON a.id = b.topicID 
        INNER JOIN
        (
            SELECT  topicID, MAX(id) id
            FROM    Posts
            GROUP   BY topicID
        ) c ON b.topicID = c.topicID AND
                b.id = c.ID
        INNER JOIN users d
            ON b.userID = d.id
WHERE   a.forumID = 16

如果删除WHERE子句,您将获得每个forumID的所有最新条目。