0

我正在尝试获取 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
4

2 回答 2

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
于 2013-06-27T01:08:14.760 回答
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.

于 2013-06-27T01:08:35.173 回答