Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在SQL中从多个查询转换为一个查询_Mysql_Sql - Fatal编程技术网

Mysql 在SQL中从多个查询转换为一个查询

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

我的数据库“电影”包含以下栏目:名称、年份(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 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