多次显示元素的SQL查询

多次显示元素的SQL查询,sql,Sql,我有下面的SQL查询,但它并不完全有效,因为它多次显示每个元素 select c.name, c.director, c.title, count(c.title) as numfilms from casting c join casting c1 on c1.name = c.name Group by c.name, c.director, c.title Having count (c.title) > 1 order by numfilms 因此,它显示了哪些演员制作了不止一部

我有下面的SQL查询,但它并不完全有效,因为它多次显示每个元素

select c.name, c.director, c.title, count(c.title) as numfilms
from casting c
join casting c1 on c1.name = c.name
Group by c.name, c.director, c.title
Having count (c.title) > 1
order by numfilms

因此,它显示了哪些演员制作了不止一部电影。但不幸的是,这个查询显示每个演员的电影数量是他拍电影数量的两倍。使用distinct不起作用,因为演员可能在不同的电影中扮演过相同的片名和不同的导演。

这个问题没有意义-演员回归本身是令人困惑的部分-这完全没有必要,除非你需要如下所示的完整记录

select c1.name, c1.director, c1.title, numfilms
from
(
    select c.name, count(c.title) as numfilms
    from casting c 
    Group by c.name
    Having count (c.title) > 1
) c
join casting c1 on c1.name = c.name
order by c1.name
该查询显示:对于出现在多部电影中的每个演员,显示所有演员的电影

另一方面,如果你只追求在多部电影中出现过的演员名字,那么你只需要一个简单的演员阵容

select c.name, count(c.title) as numfilms
from casting c 
Group by c.name
Having count (c.title) > 1

令人困惑的是,如果您只需要姓名,为什么要将导演和头衔添加到SELECT?演员电影中的哪一部电影要放映?

这个问题没有意义——演员的回归是令人困惑的部分——除非你需要下面所示的完整记录,否则完全没有必要

select c1.name, c1.director, c1.title, numfilms
from
(
    select c.name, count(c.title) as numfilms
    from casting c 
    Group by c.name
    Having count (c.title) > 1
) c
join casting c1 on c1.name = c.name
order by c1.name
select c.name, count(c.title) as numfilms
from casting c
Group by c.name
Having count (c.title) > 1
order by numfilms
该查询显示:对于出现在多部电影中的每个演员,显示所有演员的电影

另一方面,如果你只追求在多部电影中出现过的演员名字,那么你只需要一个简单的演员阵容

select c.name, count(c.title) as numfilms
from casting c 
Group by c.name
Having count (c.title) > 1
令人困惑的是,如果您只需要姓名,为什么要将导演和头衔添加到SELECT?该演员的电影中哪一部要放映

select c.name, count(c.title) as numfilms
from casting c
Group by c.name
Having count (c.title) > 1
order by numfilms
如果你只是在寻找演员的名字和他们拍的电影的数量,你可以从分组中删除标题和导演,然后选择

编辑:通过阅读下面澄清问题的评论,Richard的第一个问题应该是正确的解决方案

如果你只是在寻找演员的名字和他们拍的电影的数量,你可以从分组中删除标题和导演,然后选择


编辑:阅读下面澄清问题的评论,Richard的第一个查询应该是正确的解决方案。

此查询是否也会返回多行?此查询将返回演员参与的每部电影的电影和导演。原来问题的措辞本来可以再好一点。我刚刚重读了我的问题。抱歉说得有点太费解了。我要做的就是给每一个演过不止一部电影的演员看他演过的电影。在这种情况下,我的初始查询是否正确?出于某种原因,我认为这是一个错误的显示,类似于以下内容:演员1电影1导演1计数;actor1 film2 director2计数。好的,随着问题的澄清,Richard的第一个查询将是您要查找的。@Sorin您的查询也应该可以工作,但会更慢,因为它首先分解结果集,然后对计数进行分组。此查询是否也会返回多行?此查询将返回演员参与的每部电影的电影和导演。原来问题的措辞本来可以再好一点。我刚刚重读了我的问题。抱歉说得有点太费解了。我要做的就是给每一个演过不止一部电影的演员看他演过的电影。在这种情况下,我的初始查询是否正确?出于某种原因,我认为这是一个错误的显示,类似于以下内容:演员1电影1导演1计数;actor1 film2 director2计数。好的,随着问题的澄清,Richard的第一个查询将是您要查找的。@Sorin您的查询也应该可以工作,但会更慢,因为它首先分解结果集,然后对计数进行分组。