SQL Server'无效列名'错误

时间:2012-02-03 22:06:37

标签: sql sql-server-2008

我(来自imdb数据库)有一个casts表和一个movie表。我正在尝试用最大的演员(不同演员)找到电影的名字和演员大小。

这是我提出的,但我得到了

  “totalcount”

上的“无效列名”错误

为什么?

此外,此查询是否正确?

select name, count(distinct pid) as totalcount 
from casts join movie on mid=movie.id 
where totalcount =
    (select max(CastCount.total) 
    from (select count(distinct pid) as total from casts group by mid)CastCount) 
group by name;

3 个答案:

答案 0 :(得分:1)

您无法在WHERE中使用别名。由于它是聚合的,您应该用HAVING替换它: HAVING totalcount = ... 此外,您的子查询可能返回超过1行,并且您将有另一个错误。

答案 1 :(得分:1)

在MySQL中,您无法在WHERE子句中通过别名引用别名列。

您最好的选择不是选择计数等于所选最大值的位置。相反,按照从高到低的顺序排序,并限制到第一行。

答案 2 :(得分:0)

这样的东西?

SELECT movie.name, COUNT(casts.id) AS castsize
FROM cast
JOIN movie
ON movie.id = casts.mid
GROUP BY casts.mid
HAVING COUNT(casts.id) = MAX(COUNT(casts.id))