加入订购的表格

时间:2011-11-09 00:18:38

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

假设有一个帖子表,以及这些帖子的评论表。表'comments'有一个标题为'post_id'的列,其中包含每个注释的目标ID,以及一个标题为'rating'的列,其中包含每个注释的评级(竖起拇指减去拇指向下)。

我需要的是一个查询,它将选择所有帖子以及最高评价的评论。普通的连接,如下所示:

SELECT * FROM posts LEFT JOIN comments ON comments.post_id = posts.id;

...每条评论都会返回一行。我猜我需要通过评级来排序表评论,然后按照帖子ID对结果进行分组。但我一直在寻找正确的语法来做到这一点,并且找不到它(并且试验和错误也没有用)。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

尝试使用subselect,但要小心大型查询,因为它在服务器上往往很重要

SELECT * FROM posts 
LEFT JOIN comments ON comments.rating = 
    (SELECT MAX(comments.rating) 
     FROM comments 
     WHERE comments.post_id = posts.id);