3
当我尝试ORDER BY
具有列号和聚合函数时,我得到2个不同的结果。这两种方法有什么区别? (我以为他们会有相同的输出)具有列号或聚合函数的SQL ORDER BY
列出1978年电影的顺序演员名单大小。有是以下3个表:
movie(id, title, yr, director)
actor(id, name)
casting(movieid, actorid, ord)
回答1使用ORDER BY与列号:
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
我会觉得很难相信。你可以发布两个查询两个他们的输出没有改变或留下什么? – 2012-01-15 21:05:11
它应该是相同的输出,除非行之间有联系。使用关系,每次执行的顺序可以不同。按列添加标题作为第二顺序以获取带有关系的持久排序顺序。 – 2012-01-15 21:34:21
@MikaelEriksson - 如果这是MySQL,当然。但它是供应商特定的行为。例如,在MS SQL Server中,第一个按标量常量'2'排序,并且与* field 2 *没有关系。 – MatBailie 2012-01-18 10:49:15