Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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
具有列号或聚合函数的SQL ORDER BY_Sql_Sql Order By - Fatal编程技术网

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

具有列号或聚合函数的SQL ORDER BY,sql,sql-order-by,Sql,Sql Order By,当我使用列号和聚合函数尝试按排序时,得到了两个不同的结果。这两种方法的区别是什么?(我以为他们会有相同的输出) 按演员名单大小的顺序列出1978年的电影。下面有三个表: 回答1使用列号为的ORDER BY: 使用计数(a.id)。除了最后一行外,一切都一样 ... ORDER BY COUNT(a.id) DESC 我建议您创建一个子查询,并对其进行排序,以获得干净的结果,我认为Jester拥有它。下面是一个例子: select title, actor_count from (

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

按演员名单大小的顺序列出1978年的电影。下面有三个表:

回答1使用列号为的ORDER BY:

使用
计数(a.id)
。除了最后一行外,一切都一样

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

我建议您创建一个子查询,并对其进行排序,以获得干净的结果,我认为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

我很难相信这一点。您是否可以在不更改或遗漏某些内容的情况下发布两个查询及其输出?它应该是相同的输出,但行之间存在关联的情况除外。使用领带时,每次执行的顺序可能不同。将title作为第二个order by column添加,以获得带有ties的持久排序顺序。@MikaelEriksson-如果这是MySQL,请确定。但这是供应商特有的行为。例如,在MS SQL Server中,第一个是按标量常量
2
排序,与字段2无关。@Dems-您可能对特定于供应商的问题是正确的,但当您按2排序时,MySQL和MS SQL Server都会按输出中的第二列排序。看一看。“…指定为名称或列别名,或非负整数…”
...  
ORDER BY COUNT(a.id) DESC  
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