SQL Select Actor在同一部电影中扮演两个截然不同的角色



问题是选择在同一部电影中扮演2个或更多不同角色的演员。我得到了3张桌子,演员(id,姓名)电影(id,姓名)和演员(aid,mid,role)(aid是演员id,mid是电影id)我写了一个这样的查询

 select a.name
 from actor a, movie m, casts c
 where a.id = c.aid and m.id = casts.mid
 group by (m.name)
 having count(distinct role) > 2;

这没有打印出正确的结果,我没有看到它的问题。感谢您的帮助!

这个怎么样?尝试执行查询时是否有任何错误?

select actor.name from actor, casts, movie 
 where casts.aid =actor.id 
   and casts.mid = movie.id
 group by movie.name, actor.name 
having count(distinct role) >= 2

由于casts表似乎包含每个演员、电影和角色的一行(除非您省略了其他列),因此只要一对唯一值 aidmid 出现在多行上,就意味着演员在该电影中扮演了多个角色。因此,没有理由使用distinct。此外,由于所需的结果不包含电影名称,因此查询不需要也不应使用 movie 表。

如果 cast 表对于 (aidmidrole 的每个唯一组合只有一行,那么以下方法应该有效:

select name
  from actor
 where id in (  select aid
                  from casts
              group by aid, mid
                having count(*) > 1)

最新更新