SQL Query在同一个表中查找所有值中的最大值

时间:2014-10-31 05:35:07

标签: mysql sql oracle11g

我是sql查询和执行查询的新手:

我在网上查了一些例子但没有成功。

这是查询

SELECT m.genre, m.movie_title, m.release_year, m.movie_length 
FROM MOVIE m GROUP BY m.genre, m.movie_title, m.release_year,m.movie_length 
ORDER BY m.movie_length asc;

如果有人可以解释我如何获得价值观,我将非常感谢您的帮助。

谢谢

3 个答案:

答案 0 :(得分:2)

SELECT m.genre, m.movie_title, m.release_year, m.movie_length 
FROM MOVIE as m order by m.movie_length desc limit 0,1;

通过DESC添加订单后,将限制仅获得1条记录。 0表示从0索引开始,1表示定义记录数。

答案 1 :(得分:1)

要获得给定流派的所有电影的最大长度,您可以使用MAX()聚合函数。所有你需要做的就是按类型分组。这有点棘手,因为您不能只是跳入并选择电影标题,否则它将无法正确分组。首先获取它的流派和最大电影长度:

SELECT m.genre, MAX(m.movie_length) AS longestMovie
FROM movie m
GROUP BY m.genre;

完成后,您可以将其加入桌面并获取最多电影:

SELECT m.genre, m.movie_title, m.release_year, m.movie_length
FROM movie m
JOIN (SELECT m.genre, MAX(m.movie_length) AS longestMovie
      FROM movie m
      GROUP BY m.genre) t
ON t.genre = m.genre AND t.longestMovie = m.movie_length;

这是一个有效的SQL Fiddle

答案 2 :(得分:0)

SELECT m.genre, m.movie_title, m.release_year, m.movie_length
FROM MOVIE AS m ORDER BY m.movie_length DESC LIMIT 1;

这应该是你正在寻找的。