0

我对此页面http://sqlzoo.net/3.htm上的以下练习查询有疑问:

4d。按演员表大小的顺序列出 1978 年的电影。

我正在尝试进行查询:

SELECT DISTINCT(m1.title), COUNT(c1.actorid)
FROM ((movie AS m1 JOIN casting AS c1 ON m1.id=c1.movieid) JOIN actor AS a1 ON a1.id=c1.actorid)
WHERE m1.yr=1978
GROUP BY m1.title
ORDER BY COUNT(c1.actorid) DESC

但它没有给出正确的答案,我不知道为什么。我错了吗?

4

1 回答 1

2

这应该这样做:

select m.title, count(c.actorid)
from movie m
  join casting c on c.movieid = m.id
where m.yr = 1978
group by m.title
order by 2 desc

由于您不需要来自参与者的任何信息,因此您不需要在联接中包含该表。

顺便说一句:您对 distinct 的使用表明了两个误解:

  1. distinct不是函数。它总是对结果的所有列进行操作
  2. 当你做 a 时group by,不需要也不同(因为 group by 已经只返回分组列的不同值)
于 2012-06-10T11:19:17.317 回答