MYSQL Join - 父子表join,只获取子表的最新记录

标签 mysql sql join greatest-n-per-group

我有两个表 Posts 和 comments

张贴表

Post_id
Post_content

评论表

comment_id
Comment
post_id
created_date

一个帖子可以有多个评论或零个评论

我的要求是使用 left outer join 获取帖子的最新评论。

我的意思是结果应该是包含以下列的帖子的一条记录。

post_id,post_content ,comment_id,comment 

简而言之,帖子应该与其最新评论(如果存在)相处融洽。

(目前系统首先获取帖子,然后再次访问服务器以获取要显示的最新评论,因为我们最初只显示一条评论,所以想一次性获取它们......不确定应该是什么如果要显示多个评论,最好的方法..?)

谢谢

问候

基兰

最佳答案

SELECT Post.post_id, post_content, comment_id, comment
FROM
    Post LEFT JOIN Comments
        ON Post.post_id = Comments.post_id
        AND created_date = (
            SELECT MAX(created_date)
            FROM Comments
            WHERE Post.post_id = Comments.post_id
        )

顺便说一句,您应该考虑索引 Comments {post_id, created_date} 以获得最佳性能,但要注意非主键索引开销,以防您使用 InnoDB(请参阅“集群的缺点” “this article 中的部分)。

关于MYSQL Join - 父子表join,只获取子表的最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8073492/

相关文章:

mysql - 多个 MySQL 关系中的记录过多(与添加关系的关系) - GROUP BY 和 JOIN?

php - 我无法构建 SQL 查询(连接)

mysql - 计算 MySQL 文本列中的单词

mysql - 连接和 View 设计方面

mysql - 如何统计Mysql中特定列的字段数?

mysql - 查找给定 PK 的位置以及下一行和上一行作为一个结果行

javascript - 删除并添加到数据库

mysql - 在 ASP.NET 中使用一个应用程序连接两个不同的数据库

php - 比较 2 个表中的每一行

mysql - CodeIgniter 从两个以上的表中获取记录