我有两个表 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/