MySQL-联接和子查询

时间:2019-12-06 20:51:43

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

我正在寻找一个问题,询问“每年列出该年发行的最差电影的名称。电影是根据得分进行评分的:得分越低,电影越差。如果发生平局,应列出所有平局的电影。结果应该按时间顺序显示。'

这些表是:

movies(id, title, yr, score, votes, director)
castings(movieid, actorid)
actors(id, name)

到目前为止,我已经了解了

SELECT m.title
FROM movies AS m
WHERE m.score = (SELECT MIN(score) FROM movies)
ORDER BY m.yr DESC

1 个答案:

答案 0 :(得分:0)

您快到了。实际上,您的查询为您提供了多年来总分最低的电影。您需要关联子查询和外部查询:

select yr, title
from movies m
where score = (select min(score) from movies m1 where m1.year = m.year)
order by yr desc

通过将表与聚合子查询联接在一起,您可以获得与之相同的结果:

select m.yr, m.title
from movies m
inner join (select yr, min(score) score from movies group by yr) x
    on x.yr = m.yr and x.score = m.score