select mvid
from GenreInfo
where genre='Drama'
and mvid in (
select mvid
from GenreInfo
where genre != 'Drama');
我只是检查我的代码会输出所有专属电视剧和所有不是戏剧的电影吗?
答案 0 :(得分:2)
您的查询将为您提供Drama
和至少一种其他类型的电影
它不会返回专属Drama
的电影。
答案 1 :(得分:0)
如果每个mvid只能有一种类型,那么你想要的就像提取表格中的每一部电影一样!
SELECT mvid FROM GenreInfo WHERE genre = 'Drama' OR genre <> 'Drama'
与:
相同SELECT mvid FROM GenreInfo
答案 2 :(得分:0)
这个查询的结果将是什么(假设每部电影只有一个条目) - 你有效地选择既是戏剧又不是戏剧的电影:)。
如果电影可以分配多种类型,请告诉我们它是如何完成的。另外,编辑您的帖子并告诉我们您使用的数据库。
编辑:对于mvid不唯一(在sql server中工作,但也适用于其他dbs):
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'
)
答案 3 :(得分:0)
假设表GenreInfo看起来像:
mVid Genre
1 Drama
2 Drama
2 SciFi
3 Drama
3 SciFi
4 SciFi
您的查询将返回:2,3
这是因为你基本上是在说: 给我所有的mVid's Genre = Drama(给1,2,3) 并且从那个列表中,给我那些类型不是戏剧的mVids(因为他们也有SciFi而给出2,3)
总的来说,你会得到一个mVids列表,其中Genre是Drama以及至少一种其他类型。
如果您想获得Genre专属戏剧的内容,请执行以下操作:
SELECT * FROM GenreInfo WHERE Genre = 'Drama' and NOT mVid in (
SELECT mVid FROM GenreInfo WHERE Genre <> 'Drama'
)