我(来自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;
答案 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))