带有列号或聚合函数的SQL ORDER BY

时间:2012-01-15 20:49:35

标签: sql sql-order-by

当我使用列号和聚合函数尝试ORDER BY时,我得到了2个不同的结果。这两种方法有什么区别? (我以为他们有相同的输出)

  

按照演员表大小的顺序列出1978年的电影。下面有3个表格:

movie(id, title, yr, director)  
actor(id, name)  
casting(movieid, actorid, ord)  
  

使用带有列号的ORDER BY回答1:

SELECT title
       ,COUNT(a.id)  
FROM   movie m
       ,casting c
       ,actor a  
WHERE  m.id=movieid 
AND    a.id=actorid 
AND    yr=1978  
GROUP BY title  
ORDER BY 2 DESC  

使用COUNT(a.id)。除最后一行外,一切都是一样的

...  
ORDER BY COUNT(a.id) DESC  

2 个答案:

答案 0 :(得分:0)

我建议你制作一个子查询并订购干净的结果

答案 1 :(得分:0)

我认为Jester有它。以下是您的一个例子:

select title, actor_count from (
    SELECT title
       ,COUNT(a.id) actor_count 
    FROM   movie m
       ,casting c
       ,actor a  
    WHERE  m.id=movieid 
    AND    a.id=actorid 
    AND    yr=1978  
    GROUP BY title) subquery
order by actor_count