Sql 不确定这显示了什么

Sql 不确定这显示了什么,sql,Sql,我只是在检查我的代码是否会输出所有只属于戏剧的电影和所有不属于戏剧的电影 如果每个mvid只能有一种类型,那么您想要的就是提取表中的每一部电影 select mvid from GenreInfo where genre='Drama' and mvid in ( select mvid from GenreInfo where genre != 'Drama'); 假设每部电影只有一个条目,则此查询的结果将为零-您实际上选择的电影既有戏剧,又没有戏剧: 如果一部电影可以指定多种类型,请告诉

我只是在检查我的代码是否会输出所有只属于戏剧的电影和所有不属于戏剧的电影

如果每个mvid只能有一种类型,那么您想要的就是提取表中的每一部电影

select mvid
from GenreInfo
where genre='Drama' 
and mvid in (
select mvid
from GenreInfo
where genre != 'Drama');

假设每部电影只有一个条目,则此查询的结果将为零-您实际上选择的电影既有戏剧,又没有戏剧:

如果一部电影可以指定多种类型,请告诉我们是如何完成的。另外,请编辑您的帖子并告诉我们您使用的是什么数据库

编辑:对于mvid,在sql server中不是唯一的,但对于其他数据库也应该是唯一的:

SELECT mvid FROM GenreInfo

您的查询将为您提供戏剧电影和至少一种其他类型的电影。
它不会退回那些只属于戏剧性质的电影

假设GenreInfo表如下所示:

select distinct
    gi.mvid
from GenreInfo gi
where gi.genre='Drama' 
    or not exists (
        select 1 from GenreInfo where mvid=gi.mvid and genre='Drama'
    )
您的查询将返回:2,3

这是因为你基本上是在说: 给我所有mVid,其中类型=戏剧给出1,2,3 同样从这个列表中,给我那些类型不是戏剧的MVID,给2,3,因为他们也有科幻

所以总的来说,你会得到一个MVID列表,其中类型是戏剧,以及至少一个其他类型

如果你想得到那些类型完全是戏剧的,那么请执行以下操作:

        mVid    Genre
         1      Drama
         2      Drama
         2      SciFi
         3      Drama
         3      SciFi
         4      SciFi

我很困惑。。。结果不总是什么都没有吗?取决于您的表结构,请提供。同样,它也不是单元/集成测试的真正替代品。@如果mvid不是主键/唯一的话,我想是的。你试过了吗?它显示了什么?正在使用的表是GenreInfoMVID,GENRE。这正是我所想的,然而,它输出mvid 1-6,然后跳到11、14、15、17。所以有些电影被跳过了。对不起,我误解了你的问题!如果你在问题中使用SELECT,你可能会得到这些结果,因为每部电影都有不同的类型!因此,您可以获得所有戏剧电影和其他类型的电影。是的,您是对的,所有带有戏剧和其他类型的电影都是印刷的,谢谢!电影可以有多种类型,可以这样分配-在类型信息值1中插入“犯罪”;在GenreInfo值1中插入“戏剧”;我在用甲骨文SQL@Ryan. 好啊请参见编辑。
        mVid    Genre
         1      Drama
         2      Drama
         2      SciFi
         3      Drama
         3      SciFi
         4      SciFi
    SELECT * FROM GenreInfo WHERE Genre = 'Drama' and NOT mVid in (
        SELECT mVid FROM GenreInfo WHERE Genre <> 'Drama'
    )