mysql - 从另一个表中选择最近的行

标签 mysql sql

我正在构建一个基本论坛,我想获取已创建的线程列表,但也想从帖子表中获取最新帖子,这样我就可以显示最后回复和时间最后回复的

我的尝试是如何导致重复结果的,我尝试了 LEFT JOININNER JOIN 结果相同。我希望有人知道解决方案。

这是我的尝试:

SELECT  t1.username as thread_starter,
        t2.username as last_reply_username,
        t1.thread_time as thread_start,
        t2.post_time as last_reply_time,
        t1.title,
        t1.sticky 
FROM threads t1
     INNER JOIN posts t2
        ON t1.id = t2.threadid
ORDER BY t1.sticky DESC, t2.post_time DESC

有谁知道我该如何解决这个问题,这样它就只会从与每个线程相关的帖子表中获取最后和最新的帖子,而不会返回重复的线程?

最佳答案

下面查询背后的想法是,它从 post 表中为子查询。然后它连接回原始表 postthreads 表。

SELECT  a.username AS Thread_Starter,
        c.username AS Last_reply_username,
        a.thread_time AS Thread_Start,
        c.post_time AS Last_Reply_Time,
        a.Title,
        a.Sticky
FROM    threads a
        INNER JOIN
        (
            SELECT  threadID, MAX(Post_Time) lastPost
            FROM    post
            GROUP BY ThreadID
        ) b ON  a.threadID = b.threadID
        INNER JOIN post c
            ON  b.threadID = c.ThreadID AND
                b.lastPost = c.post_time
ORDER BY a.sticky DESC, c.post_time DESC

关于mysql - 从另一个表中选择最近的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12906002/

相关文章:

php - MySQL 查询移动/复制某些行而不是整个表?

javascript - 将数据从javascript发送到mysql数据库

sql - 如何在 Postgres 中使用 json 键连接 2 个表?

c++ - QSqlQuery 使用数百 MB 内存

mysql - 基于两个日期时间字段的查询

php - localhost 是,但 phpmyadmin 空白

sql - 如何使用声明的变量在 case when 条件下从另一个表中选择数据?

mysql - 根据内连接结果显示数据

mysql - 如何将文件从C盘复制到网络文件夹?

MySql Select 和 SUM 问题