QL:查找前2名和逆序

时间:2016-10-29 18:35:10

标签: sql

我有IMDB数据库;我正在寻找制作大多数电影的前两年,而且我必须按照年代顺序对它们进行排序,并且只打印多年。

我正在尝试计算列表并对其进行排序。反过来说'之后但是我不能在最后的顺序中按顺序排序'语句因为在FROM语句中我不引用任何表而是打开下一个语句。它说"未知的列顶部2"以及我无法相应地订购我的结果。

我做错了什么?

SELECT * 
FROM

    (SELECT m.year, COUNT(*)    
     FROM movies as m    
     GROUP BY m.year    
     ORDER BY m.year DESC) AS topTwo    

ORDER BY **topTwo** ASC    
LIMIT 2;

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找这个:

SELECT topTwo.year
FROM (SELECT m.year, COUNT(*) as cnt
      FROM movies m    
      GROUP BY m.year    
      ORDER BY COUNT(*) DESC
      LIMIT 2
     ) topTwo    
ORDER BY year ASC; 

注意:

  • LIMIT进入子查询。
  • COUNT(*)被赋予别名。
  • 子查询中的ORDER BY基于计数。
  • 外部查询中的ORDER BY基于年份。
  • 您似乎只想要年份,因此外部查询只选择该列。