【问题标题】:Join with an ordered table加入有序表
【发布时间】:2011-11-09 00:18:38
【问题描述】:

假设一个帖子表,以及这些帖子的 cmets 表。表 'cmets' 有一个标题为 'post_id' 的列,它保存每条评论的目标的 id,还有一个标题为 'rating' 的列,它保存每条评论的评级(大拇指向上减去大拇指向下)。

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

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

...将为每条评论返回一行。我猜我需要按等级对表 cmets 进行排序,然后按帖子 ID 对结果进行分组。但是我一直在寻找合适的语法来做到这一点,但找不到(而且反复试验也不起作用)。有任何想法吗?谢谢!

【问题讨论】:

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


    【解决方案1】:
    【解决方案2】:

    尝试子选择,但在大型查询时要小心,因为它在服务器上往往很重

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-19
      • 1970-01-01
      • 2022-01-23
      • 2019-01-14
      • 1970-01-01
      • 2018-11-28
      相关资源
      最近更新 更多