我有一个电影分级网站的表格,如下所示:


电影(MovieID,标题,年份)
评分(评论者ID,电影ID,评分)
审稿人(ReviewerID,姓名)


我想写一个查询,给出最慷慨的评论者最喜欢的电影的名称。目前,我已将任务分解为两部分:

-查找评论者最喜欢的电影的名称:

SELECT DISTINCT Title FROM Movies
NATURAL JOIN Ratings
WHERE rating IN (SELECT MAX(rating) FROM Ratings)


-找出最高平均评分:

SELECT reviewerID, AVG(rating) AS avg_rating
FROM Ratings
GROUP BY reviewerID
ORDER BY avg_rating DESC LIMIT 1


但是我不确定如何连接这两个查询。使用子查询,这是行不通的,因为我无法在子查询中使用LIMIT。
有谁知道如何连接这两个查询?
还是不使用子查询的方法?

最佳答案

SELECT m.title
  FROM movies m
  JOIN ratings r
    ON r.movieid = m.movieid
  JOIN
     ( SELECT reviewerID
         FROM Ratings
        GROUP
           BY reviewerID
        ORDER
           BY AVG(rating) DESC
        LIMIT 1
     ) x
    ON x.reviewerid = r.reviewerid
 ORDER
    BY r.rating DESC
 LIMIT 5;


或类似的东西

关于mysql - 电影评论网站,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36448107/

10-13 22:17