MYSQL Join - Parent和Child表连接并仅获取子表中的最新记录

时间:2011-11-10 00:09:41

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

我有两张表帖子和评论

发布表

Post_id
Post_content

评论表

comment_id
Comment
post_id
created_date

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

我的要求是使用左外连接获取帖子的最新评论。

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

post_id,post_content ,comment_id,comment 

简单来说,如果帖子存在,帖子应该与他们的最新评论相处。

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

谢谢

此致

基兰

1 个答案:

答案 0 :(得分:7)

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
        )
BTW,你应该考虑索引Comments {post_id, created_date}以获得最佳性能,但要注意使用InnoDB时的非主键索引开销(参见this article中的“群集的缺点”部分) )。