我正在尝试获取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
答案 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
的所有最新条目。