如何在子查询中使用一个sql查询的结果

时间:2009-09-03 04:59:31

标签: sql subquery

我必须回答以下问题

  

“对于数据库中的每一年,列出年份和总数   那一年发布的电影,显示了这些总数   降序。也就是说,数量最多的年份   电影首先出现。如果有些年份有相同数量的电影,   按年份递增顺序显示这些。“

目前我正在使用下面的代码将电影组合在一起,但无法让它们分类:

Select YearReleased, count(*)                
from Movies                             
group by YearReleased 

我希望使用一些东西来订购这个,并且我正在尝试使用第一个查询的结果进行子查询:

(select * from results order by count(*))

但到目前为止我没有成功。我如何实现这一目标,或者是否有更好的方法来按顺序获得结果?

5 个答案:

答案 0 :(得分:5)

“不成功”并不是非常有用,与实际的错误文本相反 - 并且您没有告诉我们您正在运行哪个供应商的数据库,因此我们无法测试。也就是说,以下应该有效:

select
  YearReleased,
  count(*) as movie_count
  from movies
  group by YearReleased
  order by movie_count desc, YearReleased;

不需要子查询!

针对SQLite 3.5.9进行验证;如果针对不符合标准的内容(SQLite )运行,除非采用非常明确的方式记录,否则您的里程可能会有所不同。

答案 1 :(得分:0)

选择* 从 ( 选择YearReleased,将count(*)作为NumReleased 来自电影 按年份分组发布 ) 由NumReleased订购

答案 2 :(得分:0)

select * from (select YearReleased, count(*) counter
from Movies
group by YearReleased 
) a order by counter

根据您的sql风格,可能需要更改语法。

答案 3 :(得分:0)

第一个查询中的

:选择yearReleased,将count(*)选为'count1' 第二种:按 count1

排序

答案 4 :(得分:0)

是的,使用聚合,您可以为count(*)添加别名,它可以作为列引用。