SQL Select语句未给出预期结果?

SQL Select语句未给出预期结果?,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我想写一篇精选的声明,展示所有科幻相关类型的前十名演员。取而代之的是,我得到了前十名演员以及他们拥有的所有片名,而不仅仅是科幻片(这正是我想要的) 尝试将WHERE替换为HAVING 使用WHERE选择所有可能拥有科幻小说的作者拥有会在你寻找的时候限制查询。在类型中使用LIKE-over-stright-equality有什么原因吗?在我看来,查询是可以的,我就是这样被教的。另外,如果我使用=我得到一个空表,这不应该是这样的。好吧,这是一个问题。。。数据库中“科幻”之前或之后是否有空格…如果此数

我想写一篇精选的声明,展示所有科幻相关类型的前十名演员。取而代之的是,我得到了前十名演员以及他们拥有的所有片名,而不仅仅是科幻片(这正是我想要的)


尝试将
WHERE
替换为
HAVING


使用
WHERE
选择所有可能拥有科幻小说的作者<代码>拥有会在你寻找的时候限制查询。

在类型中使用LIKE-over-stright-equality有什么原因吗?在我看来,查询是可以的,我就是这样被教的。另外,如果我使用=我得到一个空表,这不应该是这样的。好吧,这是一个问题。。。数据库中“科幻”之前或之后是否有空格…如果此数据库是使用某种导入填充的,请检查是否有特殊字符。嗯,有两种不同的类型中都有“科幻”…'《动作科幻与幻想》、《外星人科幻》。有人能告诉我为什么这部电影被否决了吗我对回答问题比较陌生,如果出现这种情况,我会停止回答。你有没有试过写一个问题来解决作者的问题?因为有了have,你会在聚合发生后过滤掉,所以你会计算出不需要的记录。我猜你不会真的完全知道have可以回答这个问题。我一直在做的是,如果你认为你可能知道答案,然后留下评论,询问提问者是否尝试过。如果这解决了问题,您可以始终将其作为答案。
在分组依据之后将
应用于记录,通常用于检查聚合结果,但问题作者需要在分组依据之前过滤记录,而且不必从数据库中接收所有作者,只需按流派进行筛选。我只是修改了我的答案,我在“分组依据”中输入了错误的字段。
select top 10 people_name as actor_name, count(tg_genre_name) as number_of_titles
from nf_people
    join nf_cast on people_id=cast_people_id
    join nf_titles on cast_title_id=title_id
    join nf_title_genres on title_id=tg_title_id
where tg_genre_name like '%Sci-Fi%'
group by people_name
order by number_of_titles desc
SELECT TOP 10 M.actor_name,  count(*) as number_of_titles FROM
(
  SELECT people_name AS actor_name
  FROM nf_people
       JOIN nf_cast ON people_id=cast_people_id
       JOIN nf_titles ON cast_title_id=title_id
       JOIN nf_title_genres ON title_id=tg_title_id
  WHERE tg_genre_name LIKE '%Sci-Fi%'
) AS M
GROUP BY M.actor_name
ORDER BY count(*) DESC