Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取最新条目并加入另一个表_Mysql_Sql - Fatal编程技术网

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

Mysql 获取最新条目并加入另一个表,mysql,sql,Mysql,Sql,我正在尝试获取最近一篇文章的用户名和时间戳,比如topicID是88 使用者 职位 所以这里我想要POSTID677和用户bob 我可以在单个sql查询中执行此操作吗 如果我能将其应用于此,那就太好了: SELECT topics.id, topics.subject, topics.forum_id FROM topics WHERE topics.forumID = 16 未经测试,但在我脑海中,我认为以下查询将满足您的需求: SELECT Users.username, Posts.ti

我正在尝试获取最近一篇文章的用户名和时间戳,比如topicID是88

使用者

职位

所以这里我想要POSTID677和用户bob

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

如果我能将其应用于此,那就太好了:

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

未经测试,但在我脑海中,我认为以下查询将满足您的需求:

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

假设表
Topic
通过
Topic.ID=Post.TopicID
链接到表
Post
,并且您希望获得与之关联的最新
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
的所有最新条目


太棒了。太棒了。我爱你!
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
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