Mysql 在SQL中从多个查询转换为一个查询
我的数据库“电影”包含以下栏目:名称、年份(1980-2015)和电影评级(1-10)。 我希望每年都能拍到最好的电影,比如:Mysql 在SQL中从多个查询转换为一个查询,mysql,sql,Mysql,Sql,我的数据库“电影”包含以下栏目:名称、年份(1980-2015)和电影评级(1-10)。 我希望每年都能拍到最好的电影,比如: The Beutiful Mind 2001 rating: 8.2 Catch Me If You Can 2002 rating: 8.0 我只能在多个查询中思考如何执行此操作,如: SELECT * FROM movies WHERE year = 2001 ORDER BY imdb_rating DESC LIMIT 1; SELECT * FROM mo
The Beutiful Mind 2001 rating: 8.2
Catch Me If You Can 2002 rating: 8.0
我只能在多个查询中思考如何执行此操作,如:
SELECT *
FROM movies
WHERE year = 2001
ORDER BY imdb_rating DESC
LIMIT 1;
SELECT *
FROM movies
WHERE year = 2002
ORDER BY imdb_rating DESC
LIMIT 1;
等等
如何在SQL中的一个查询中实现它?最好的办法是什么?或者在这种情况下,多个查询可能没有问题?谢谢你的帮助:)
一种方法是在
where
子句中使用子查询:
select m.*
from movies m
where m.imdb_rating = (select max(m2.rating) from movies m2 where m2.year = m.year);
一种方法是在
where
子句中使用子查询:
select m.*
from movies m
where m.imdb_rating = (select max(m2.rating) from movies m2 where m2.year = m.year);
让我知道这是否对你有效
让我知道这是否对您有效。如果同一年有两部电影的评级为10,会发生什么情况?SQL Server没有
限制,因此我将其作为标记删除。这是mysql还是SQL Server?你标记了两者。Webeng-我们可以从最好的中选择一个;SQLChao,Gordon Linoff-我只是在练习SQL查询,很抱歉添加了其他标记:)如果同一年有两部电影的评级为10,会发生什么?SQL Server没有限制,所以我将其作为标记删除。这是mysql还是SQL Server?你标记了两者。Webeng-我们可以从最好的中选择一个;SQLChao,Gordon Linoff-我只是在练习SQL查询,很抱歉添加了其他标记:)按年份从电影组中选择名称、年份、最大(评级);按年份从电影组中选择名称、年份、最大(评级);
SELECT name, year, MAX(rating) FROM Films WHERE GROUP BY year