2

我正在尝试编写一个 mysql 查询来返回平均课程评分最高的前 3 门课程。我有两张表,评级和课程。

评分表:

courseId    rating  
   1           6    
   2           2        
   1           4
   2           5
   3           3
   4           0
   6           0

课程表:

courseId        cnum        cname
   1            100         name1
   2            112         name2
   3            230         name3
   4            319         name4
   5            122         name5
   6            320         name6

我需要返回平均评分最高的前 3 门课程。任何想法我怎么能做到这一点?谢谢

4

1 回答 1

3
SELECT Courses.*
FROM   Courses NATURAL JOIN (
  SELECT   courseId, AVG(rating) avg_rating
  FROM     Ratings
  GROUP BY courseId
  ORDER BY avg_rating DESC
  LIMIT    3
) t

sqlfiddle上查看。

于 2012-07-03T22:27:05.090 回答